网上有大神说:
如果是mov ax,7 此时ax中存放的是37H(系统直接把十进制数转换成十六进制数了)
如果是mov ax,7H 此时ax中存放的是7H
问题 1 :首先上面的论点是正确的吗?
然后 如果有add ah,7
add ah,7h
问题 2 :以上2条指令到底等不等啊?
cmp ah,9
cmp ah,9h
问题 3 :以上2条指令到底等不等啊?
因为老看到很多书上一会写有
mov dl,al
cmp dl,9
jb nn
add dl,7
nn: add dl,30h
mov ah,1
int 16h
而有的书上又写着
mov dl,al
cmp dl,9
jb nn
add dl,7h
nn: add dl,30h
mov ah,1
int 16h
而有的地方又写成
mov dl,al
cmp dl,9h
jb nn
add dl,7h
nn: add dl,30h
mov ah,1
int 16h
问题 4 :
mov ah,1
int 16h
和mov ah,1
int 21h
有区别吗?也就是int 16h和int 21h有什么区别呀?
我是纯自学看的汇编,很多细节不懂的,大神别喷呐,诚心求解.
请好心的大神一个一个问题回答.万分感谢.
------解决方案--------------------------------------------------------
问题一: 扯蛋. mov ax,7 与 mov ax,7h 是等价的.
问题二: 相等
问题三: 相等
问题四: INT 16H /AH=1 BIOS功能调用,读键盘缓冲区的字符
INT 21H /AH=1 DOS功能调用,键盘输入并回显.
INT 16H和INT 12H的区别是INT 16H是BIOS提供的功能,INT 21H是DOS提供的功能.
INT 16H/AH=1 用于从键盘缓冲区读取字符,只读取缓冲区的字符.
INT 21H/AH=1 也是读取键盘输入,但它会等待用户输入.
7是十进制,7H是十六进制,7等于7H. 在0-9的十进制与十六进制是对应的,没有区别.
只有大于9,也就是从10开始,十六进制变成AH,他们才有区别.
二进制的0 , 1 与十进制也是一样的,只有十进制从2开始,二进制变成了10B.