汇编输出十进制数

最近,老师让写一个汇编程序,结果除了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





展开阅读全文

没有更多推荐了,返回首页