在IMUL描述中,它说:
如果乘积的上半部分被设置,则进位和溢出标志被设置 不是下半部分的符号延伸。
所以我有一些汇编代码:
MOV AL, 48
MOV BL, 4
IMUL BL ; AX = 00C0h, AH = 00 is positive and AL = C0 is negative so CF = OF = 1
MOV AX, 0x8760
MOV BX, 0x100
IMUL BX ; DX:AX = FF87:6000, DX is negative and AX is positive so CF = OF = 1
但是在这个:
MOV AX, 0xFFF6
MOV BX, 0x1FFE
IMUL BX ; in debug, the result is DX:AX = FFFE:C014, CF = OF = 1
DX和AX都是负数,那为什么要设置CF和OF呢?
下半部分的标志延伸意味着: