请您告知下面要解决的程序:
mov ax, 0835 h
mov cv, 005d h
idiv cl
ax =?
正确答案:3716
我的回答:0016(我通过将0835h转换为2101十进制和005dh转换为93十进制来得到它。然后除以2101/93 = 22.59然后将22转换回十六进制并得到16.因此AX
得到商0016h。
另外,从下面的代码收到的ax
值呢?
mov ax, 0084
mov bx, 009C
imul bl
正确答案:3070 我的回答:141C(乘以二进制)
我非常感谢你的帮助。
提前谢谢你。
马丁
答案 0 :(得分:0)
要将字除以字节(字/字节),商用AL写入,余数用AH写入。因此,在您的示例中,AX=3716H
。
对于两个字节(字节*字节)的乘法,结果是一个字(16位)。因此,在您的示例中,结果为AX=3070
。
注意对于带符号的数字,用于乘法(例如加法和移位)和除法的铅笔和纸张方法可能无法正常工作。例如,有符号乘法的正确方法是booth algorithm。我不得不说铅笔和纸张方法应该修改为有符号数字,诀窍是扩展符号位。但是,这种方法容易出错,这就是专用算法的首选原因。