IMUL指令后的CF标志和OF标志

问题描述 投票:0回答:1

在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呢?

assembly x86 nasm
1个回答
0
投票

下半部分的标志延伸意味着:

  • 取下半部分(AX)的最高位并重复它以获得适当的大小(=>给出0000或FFFF)
  • 这等于上半部分吗? (在你的情况下DX = FFFE)
    • 是 => 标记为 0
    • no => 标记为 1。(因为 FFFE != FFFF)
© www.soinside.com 2019 - 2024. All rights reserved.