[英]assembly imul and idiv
您能否建议解决以下步骤:
mov ax, 0835 h
mov cv, 005d h
idiv cl
斧=?
正确答案:3716我的答案:0016(我将0835h转换为1011的2101,将005dh转换为93的十进制。然后除以2101/93 = 22.59,然后将22转换为十六进制,得到16。这样AX
得到商0016h。
另外,从下面的代码收到的ax
值呢?
mov ax, 0084
mov bx, 009C
imul bl
正确答案:3070我的答案:141C(乘以二进制)
非常感谢您的帮助。
先感谢您。
马丁
为了将一个单词除以一个字节(单词/字节),商以AL表示,余数以AH表示。 因此,在您的示例中, AX=3716H
。
对于两个字节(byte * byte)的乘法,结果是一个字(16位)。 因此,在您的示例中,结果为AX=3070
。
请注意 ,对于带符号的数字,用铅笔和纸进行乘法(例如加法和移位)和除法的方法可能无法正常工作。 例如,用于符号乘法的正确方法是booth算法 。 我不得不说铅笔和纸的方法应该修改带符号的数字,诀窍是扩展符号位。 但是,这样的方法容易出错,这就是为什么首选专用算法的原因。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.