2013-04-29 54 views
2

這就是問題所在:在第二個mul溢出標誌被設置爲1;乘法是一個簡單的120*(-6) = -720,它包含在16位......我不明白爲什麼。MUL設置OF當它不應該

.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 

回答

6

mul無符號乘法指令,所以你得到溢出,因爲你實際上是乘以120 * 65526.(請注意,-6簽署= 0xfffa = 65526無符號)。

對於有符號乘法需要imul

+1

謝謝! :) Lamberto – 2013-04-29 09:23:21

2

由於符號的原因,您必須使用IMUL而不是MUL

+0

謝謝! :) Lamberto – 2013-04-29 09:24:50