2

这就是问题所在:在第二个mul溢出标志被设置为 1;乘法很简单120*(-6) = -720,包含在 16 位中……我不明白为什么。

    .model small
    .stack 
    .data 
a dw 30    
b dw 3
c dw -6
ris dw ?       
    .code
    .startup 

mov ax, a
mov bx, 4
mul bx
jo ove

mov bx, c
mul bx
jo ove

...

    end
4

2 回答 2

6

mul是一个无符号乘法指令,所以你得到一个溢出,因为你实际上是乘以 120 * 65526。(注意 -6 有符号 = 0xfffa = 65526 无符号。)

对于有符号乘法,您需要imul.

于 2013-04-29T09:10:59.063 回答
2

你必须使用IMUL而不是MUL因为标志。

于 2013-04-29T09:11:11.353 回答