回 帖 发 新 帖 刷新版面

主题:请教下面的程序是什么意思?

有这样一段程序:
 ;从键盘输入一数字,并将其转换成二进制数
 reader  proc  near
         mov   bx,0
 repeat:mov   ah,01h
         int   21h
         sub   al,30h
         jl    over
         cmp   al,9
         jg    over
         cbw
         xchg  ax,bx
         mov   cx,10
         mul   cx
         xchg  ax,bx
         add   bx,ax
         jmp   repeat
 over:  ret
 reader  endp 
  请各位网友多多指教,主要是
         xchg  ax,bx
         mov   cx,10
         mul   cx
         xchg  ax,bx
看不懂

回复列表 (共4个回复)

沙发

看看指令的操作数吧。

.MUL 无符号数乘法指令
格式:   MUL  SRC
执行的操作:
    字节操作数:(AX)<-(AL)*(SRC)
    字操作数:(DX,AX)<-(AX)*(SRC)

板凳

此程序的功能不断的输入数字(0--9)直至输入非法(不在0--9之间)字符)为止.把这个数值存放在BX寄存器中(自然不要超出范围)这里应该为字节乘法指令.(注意:第一次BX被置成0)随着数字不断输入不断用乘法计算出数值大小,最后存入BX)

3 楼

[quote]看看指令的操作数吧。

.MUL&nbsp;无符号数乘法指令
格式:&nbsp;&nbsp;&nbsp;MUL&nbsp;&nbsp;SRC
执行的操作:
&nbsp;&nbsp;&nbsp;&nbsp;字节操作数:(AX)<-(AL)*(SRC)
&nbsp;&nbsp;&nbsp;&nbsp;字操作数:(DX,AX)<-(AX)*(SRC)

[/quote]

************
书上不是说两个数相乘,如果是8位,一个默认放在AH中。那么应该是
字节操作数:(ax)<-(ah)*(src)

4 楼

对不起,我看的这本书上好象写错了,有人已经指出了

我来回复

您尚未登录,请登录后再回复。点此登录或注册