2

如果我只对 32 个低位进行操作,ADD EAX、EBX 是否会将 EAX 的 32 个高位归零?

那么 ADD RAX、EBX 呢?可能吗?如果是,是否保留了 RAX 的 32 个高位?

4

2 回答 2

5

ADD EAX, EBX将RAX的高 32 位归零。 ADD RAX, EBX不是有效的指令。

听起来您想将 32 位值添加EBXRAX. 为此,首先将零扩展 ( MOV EBX, EBX) 或符号扩展 ( MOVSX RBX, EBX),然后添加RBXRAX. EBX(如果您将值解释为无符号,则使用零扩展,如果它是有符号的,则使用符号扩展)。

于 2013-02-11T15:55:54.943 回答
3

是的,32 位ADD零高位。ADD RAX, EBX不可能。您可以将前 32 位清零(例如 by MOV EBX, EBX)然后使用ADD RAX, RBX(注意这可能会更改 的前 32 位RAX

于 2013-02-11T15:59:15.937 回答