ADD EAX,如果我只操作32位低位,EBX将EAX的32位高位置零;
那么ADD RAX,EBX呢?可能吗?如果是,是否保留了RAX的32个高位?
答案 0 :(得分:3)
ADD EAX, EBX
将 RAX 的高32位归零。 ADD RAX, EBX
不是有效的指令。
听起来您想在EBX
中将32位值添加到RAX
中的64位值。要执行此操作,首先要对其进行零扩展(MOV EBX, EBX
)或符号扩展(MOVSX RBX, EBX
),然后将RBX
添加到RAX
。 (如果您将EBX
中的值解释为无符号,则使用零扩展名,如果已签名则使用符号扩展名。)
答案 1 :(得分:2)
是的,32位ADD
将高位比特归零。 ADD RAX, EBX
是不可能的。您可以将前32位置零(例如MOV EBX, EBX
),然后使用ADD RAX, RBX
(注意这可能会更改RAX
的前32位)