当前位置: 代码迷 >> 汇编语言 >> 关于简单mov和cmp,add等指令内部转换有关问题
  详细解决方案

关于简单mov和cmp,add等指令内部转换有关问题

热度:6234   发布时间:2013-02-26 00:00:00.0
关于简单mov和cmp,add等指令内部转换问题
网上有大神说:
如果是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.
  相关解决方案