前面省略...
mov dl,al --->dl赋值
cmp dl,9 --->dl的值和9比较
jle num --->若dl<=9则跳转到num
add dl,7 --->若dl>9则dl+7后再跳转num {问题在这里,加30h或加37h,这是为什么啊?能图文并茂地详详详详详详详详详详详详详详详详详详详详详详详详详详详详详详解下吗,我在百度看别人的解释看不懂,求高人指点啊}
num:add dl,30h --->dl加30h(十六进) 即 dl加48(十进制)
mov ah,02h --->打印dl值
int21h
mov dl,0dh
mov ah,02h
int 21h
mov dl,0ah
mov ah,02h
int 21h
后面省略....
------解决方案--------------------------------------------------------
转换十六进制的吧???
0的ASCII码是30H,1的ACII码是31H,一直到9的ASCII码是39H,所以,数值0-9要显示在屏幕上,就要变成它的ASCII码,加上30H就可以了.
A的ASCII码是41H,十进制10对应十六进制的A, A H + 37 H =41H
B的ASCII码是42H,十进制11对应十六进制的B, B H + 37 H =42H
这样,楼主应该明白了吧?
ASCII 码是用于显示表示的. 也就是只有知道一个字符的ASCII码,才能把它显示到屏幕上.