您的位置:首页 > 其它

汇编输出十进制数

2014-11-01 10:56 190 查看
最近,老师让写一个汇编程序,结果除了helloworld 其他都不会输出,输出个数字 还变成乱码,查阅资料后,发现输出到是ASCII码对应到字符,无奈只能一个一个输出。

贴代码之前先补充一下:

BIOS 中断 INT 10H 显示字符 AH = 0EH 显示 AL 里面的数据简单来说就是
MOV AH,0EH
INT 10H
屏幕就会输出 AL 里面ASCII 码 对应到字符 

其他的注释都有了,也没什么好说到了,感谢 baidu 

COUTD: ;将双字AX化为10 进制并显示
PUSH BX ;BX,CX,DX 入栈,保存现场
PUSH CX
PUSH DX
MOV BX,10 ;转换成10进制,所以BX <= 10
XOR CX,CX ;清空 CX
C0: XOR DX,DX ;清空 DX
DIV BX ;AX 除以 BX,DX <= 余数, AX <= 商
OR DX,0E30H ;DX|0E30H 结果 DH = 0EH DL =30H+余数
PUSH DX ;商的ASCII码入栈
INC CX ;CX 自加 用于 出栈时计数
CMP AX,0 ;比较AX 与 0
JNZ C0 ;若AX(商) 不为 0 则 高位还有数 跳转到C0 继续进行计算
C1: POP AX ;出栈到AX 此时 AH = 0EH AL = 十进制数到ASCII码
INT 10H ;AH = 0EH 将AL 输出到屏幕
LOOP C1 ;CX 不为0 则跳转到C1继续出栈 输出
POP DX ;BX,CX,DX 出栈,恢复现场
POP CX
POP BX
RET
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  汇编