汇编实验10-3 数值显示
2015-05-30 08:04
246 查看
代码及注释:
代码截图及运行结果:
小结:
这....花了我大半个晚上
还好写出来了,不然睡不着了
这一个小小的转换居然这么费心思,可能是我思路有问题把,但是独立完成的感觉很好
原以为做完这三个就结束了,没想到后面还有一个课程设计....看看都有点怕啊
必要的注释都写在上面了
加油吧
;本程序意图为设计一个子程序实现内存中二进制数转化为10进制数并且显示在屏幕上 ;程序描述: ;将数据12666以十进制的形式显示在屏幕的8行3列,用绿色显示出来。 ;在显示时调用本实验中第一个字程序show_str ;提示: ;要将内存中保存的”12666”(内存中以二进制形式保存)转化为显示在屏幕上的字 ;串”12666”需要经过一定的转换,具体操作就是将12666除以10取余,当商为0时 ;则表示已经转换完,十进制对应的ASCII码就是十进制数码加上30h ;比如6对应的就是ASCII码36h assume cs:code,ds:data,ss:stack data segment db 16 dup (10) ;因为所操作的数为12666。将其转化为对应字符串的ASCII后5个字 ;节,加上以0为结束一共6个字节 data ends stack segment db 16 dup (10) ;我写的程序中使用了栈,故开辟一段空间存放数据 stack ends code segment start: mov ax,12666 mov bx,data mov ds,bx mov bx,stack mov ss,bx mov sp,16 ;初始化ds及ss mov si,0 call dtoc mov dh,8 mov dl,3 moc cl,2 call show_str ;定义字符显示位置及属性,调用子程序 mov ax,4c00h int 21h dtoc: mov di,0 mov bx,10 s: mov dx,0 div bx ;因为12666第一次除以10为1266不能使用16位/8位的除法形式,因为al ;中最大只能保存255 mov cx,ax push dx inc di jcxz ok ;因为当商为0时表示对应的转换已经完成,所以使用cx储存除法的结果, ;并且使用jcxz指令跳转到处理完转换后的程序 ;inc di作用为记录入栈数据的个数,后面程序会要用这个作为循环条件以及 ;将字符串都保存到data段后可以再分配0到字符串后面作为结束标志 ;将数据入栈的原因为用除法取余时十进制的出现是从最低位一直到最高位的 ;比如“12666”对应的余数分别是6、6、6、2、1入栈后在出栈刚好可以实现 ;以12666形式保存在data中 jmp s ok: mov cx,di lp: pop ax add al,30h mov [si],al inc si loop lp ;将di中保存的数据(余数的个数)传递给cx。并且将其中的余数转化为对应 ;的十进制ASCII码,循环作用为将这些以转换完的数据存入data中 mov byte ptr [di],0 ret show_str: push dx push cx push ax push si mov ax,0800h mov es,ax mov si,0 mov al,0a0h mul dh mov bx,ax mov al,2 mov ah,0 mul dl add bx,ax mov ch,0 mov di,cx s0: mov cl,[si] mov ch,0 jcxz ha mov es:[bx],cl mov es:[bx+1],di inc si inc bx inc bx jmp s0 ha: pop si pop ax pop cx pop dx ret code ends end start
代码截图及运行结果:
小结:
这....花了我大半个晚上
还好写出来了,不然睡不着了
这一个小小的转换居然这么费心思,可能是我思路有问题把,但是独立完成的感觉很好
原以为做完这三个就结束了,没想到后面还有一个课程设计....看看都有点怕啊
必要的注释都写在上面了
加油吧
相关文章推荐
- Blue Screen of Death
- 深入浅出:Linux设备驱动之字符设备驱动
- OSChina 周六乱弹 —— “我们”快被你们玩坏了
- iOS音效和音乐播放
- Android读取Excel文件
- UUID的生成方法
- final修饰
- SMT封装
- BuddyPress创建组、查看成员信息等找不到页面
- 如何修改IOS7 Navigation Bar上的返回按钮文本颜色
- 渗透测试系统 Kali 推出 Docker 镜像
- KEGG and Gene Ontology Mapping in Bioinformatic Method
- Java垃圾回收机制
- Boost Asio 异步TCP服务器框架
- PHP: 深入了解一致性哈希
- 标准c++库和stl库,boost库,qt库的总结(一)
- Web开发简介
- Android开发---摇一摇功能
- STL List 整理
- [问题2015S12] 复旦高等代数 II(14级)每周一题(第十三教学周)