0

我是汇编语言的新手,我想问你以下问题:

    mov ax, y
imul z; dx:ax = y*z
mov bx, dx
mov cx, ax ; bx:cx = y*z
mov ax, x
cwd ; dx:ax = x
sub ax, cx
sbb dx, bx ; dx:ax = x-y*z

为什么我必须使用最后一行代码。我想做的是计算 xy*z ...

先感谢您

4

1 回答 1

2

如果我回想起我的 80386 程序集(是的,已经这么长了),最后一行是借位减法。这与手动减法相同:例如,如果从 24 中减去 16,则首先从 4 中减去 6。但是要做到这一点,你从十列中借一个 1 并得到 12-6=6 的低位数字。当你做高位数字时,你必须记住你借了并考虑到这一点:10-10 = 0,所以答案是 6。

当您 时sub ax,cx,如果需要借用,则设置借用标志,当您 时sbb dx, bx,您调整之前的借用。

于 2013-05-11T10:42:36.130 回答