汇编输出十进制数
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
贴代码之前先补充一下:
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
相关文章推荐
- 【汇编】求十进制数的补码并转二进制和十六进制输出
- 8086汇编 计算输入两个十进制数之和用16进制输出//输入两个十六进制数之和用10进制输出
- 汇编语言:从键盘输入十进制数,输出该十进制数的十进制,二进制(B),十六进制(H),八进制(Q)表示
- 汇编语言(二):从键盘输入十进制数,输出该十进制数的十进制,二进制(B),十六进制(H),八进制(Q)表示
- 汇编语言编写数组的问题和实现输入两个十进制数输出的问题
- 汇编,接收两个2位十进制数,相加后输出
- 汇编输出十进制数
- (汇编)输入一个十进制数字串(无符号),以四位十六进制的形式输出
- 用GCC输出带C源代码注释的汇编列表文件
- 用递归的方法实现输出一个十进制数的每一位
- 编写递归函数将十进制数转换成二进制数输出
- c语言编程如何实现-十进制数转换成二进制和输出
- 实训汇编语言设计——接受一个小写字母输出对应大写字母
- 将一个十进制数转换为二进制输出
- 汇编语言学习笔记-按指定的字体输出文本
- 汇编——输入字符输出字符
- C/C++将十进制数转为二进制并输出
- 雅虎面试题─把十进制数(long型)分别以二进制和十六进制形式输出,不能使用printf系列
- 汇编语言使用转义字符实现简单的“全屏”文本输出
- 汇编一日一学(11)--输出十进制