x86 上的 Sub 指令和受影响的标志:SUB 可以设置 SF != CF 吗?
Sub instruction and affected flags on x86: can SUB set SF != CF?
由于文档并没有真正描述标志是如何受到影响的,所以我无法弄清楚子指令中进位标志和有符号标志之间的区别,似乎每当 sub a, b
中的 a < b 都将设置进位和签名标志。是否存在在子指令期间设置有符号标志而不带进位(反之亦然)的情况?
Is there a case where signed flag will be set without carry (or vice versa) during sub instruction ?
当然可以:
mov al,0xFE
sub al,2
结果是 0xFC,当它被视为带符号的 8 位时是 -4。所以SF会置位,buf CF会清零(进位可以看成"unsigned less than",0xFE显然不是unsigned less than 2)。
由于文档并没有真正描述标志是如何受到影响的,所以我无法弄清楚子指令中进位标志和有符号标志之间的区别,似乎每当 sub a, b
中的 a < b 都将设置进位和签名标志。是否存在在子指令期间设置有符号标志而不带进位(反之亦然)的情况?
Is there a case where signed flag will be set without carry (or vice versa) during sub instruction ?
当然可以:
mov al,0xFE
sub al,2
结果是 0xFC,当它被视为带符号的 8 位时是 -4。所以SF会置位,buf CF会清零(进位可以看成"unsigned less than",0xFE显然不是unsigned less than 2)。