xor ebx,ebx
mov bh ,0x04 ;how to change that "bh" to "ebx" ,and keep codes same meaning?
以及为什么人们总是使用xor
而不是mov XXX,0
?x86汇编语言,使用ebx和bh
xor ebx,ebx
mov bh ,0x04 ;how to change that "bh" to "ebx" ,and keep codes same meaning?
以及为什么人们总是使用xor
而不是mov XXX,0
?x86汇编语言,使用ebx和bh
xor ebx,ebx mov bh,0x04;如何将“bh”更改为“ebx”,并保持代码的意义相同?
假设我理解正确的话,你要的是这样的:
mov ebx, 0x0400
(bh
是bx
的高8位,这本身就是ebx
低16位,这样的价值,你所需要的。是左移8位的原始值,通过添加两个十六进制0位得到)。
为什么人们总是使用xor而不是mov XXX,0?
简而言之:因为它更短更快。见What is the purpose of XORing a register with itself?和Does using xor reg, reg give advantage over mov reg, 0?
由于bh
是ebx
的第二低字节,所以您可以只做mov ebx, 0x0400
。
xor
被使用,因为它是较短的操作码,并且处理器有特殊的支持来将其识别为清零寄存器。请参阅优化手册,部分3.5.1.8清除寄存器和依赖打破习语。