奇怪的 SBB 行为 - 减零会改变目的地?

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

我有一个代码,其中有:

EAX=00002c36

及之后:

SBB eax, 0

eax 转动:

EAX=00002c35

这可能吗?

eax 不应该是相同的值吗?

如果是正确的,看来我不太明白sbb的指令。 感谢广告

assembly x86
1个回答
3
投票

根据 https://www.felixcloutier.com/x86/sbb ,x86 SBB 指令相当于:

DEST := (DEST – (SRC + CF));

其中 DEST 是左操作数,SRC 是右操作数,CF 是进位标志。

如果进位标志为 1,则结果是预期的。根据 https://medium.com/@ismielabir/understanding-the-flag-register-in-x86-assemble-language-dc858ef1c38c :

“进位标志(CF):如果加法时从最高有效位(MSB)有进位,或者减法时最高有效位(MSB)有借位,则 CF 将为 1。否则,CF 将为 0。”

您没有给出任何上下文,因此我们无法判断哪条指令设置了进位标志。 但这里并没有什么意外的。

© www.soinside.com 2019 - 2024. All rights reserved.