在Assembly中不使用DIV进行分割

时间:2013-11-23 17:54:10

标签: assembly division byte-shifting

如何在不使用DIV指令但使用shift和add方法的情况下在Assembly中分割两个数字?

我用乘法做了,这是我的代码:

mov bl, 56H ;For example
mov dl, 79H
;start
mov bh, 00H
mov dh, 00H
xor di, di
mov cx, 08H
L1:
shr dx, 1 ;shifting the multiplier
jnc nxt
add di, bx ;adding the multiplicand to the result register di
nxt:
shl bx, 1 ;shifting the multiplicand
loop L1

第二个问题:我的老师告诉我们,有一个叫做MOVZE的指令可以完成我在第4和第5行所做的操作,但它不起作用? 我使用emu8086模拟器。

1 个答案:

答案 0 :(得分:-4)

您不能使用班次和添加将一个号码分成另一个号码。不知道谁告诉你可以做到这一点。 右移一个相当于两个加法。但你不能通过转移来划分为随机数。