x86汇编语言与ebx和bh

时间:2014-05-06 15:54:22

标签: assembly x86 cpu-registers

xor ebx,ebx
mov bh ,0x04 ;how to change that "bh" to "ebx" ,and keep  codes  same meaning?

为什么人们总是使用xor代替mov XXX,0

2 个答案:

答案 0 :(得分:4)

  

xor ebx,ebx mov bh,0x04;如何更改" bh"到" ebx" ,并保持代码相同的含义?

假设我理解正确,你想要的是:

mov ebx, 0x0400

bhbx的高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?

答案 1 :(得分:3)

由于bhebx的第二低字节,您只需执行mov ebx, 0x0400

使用

xor是因为它的操作码更短,处理器特别支持将其识别为归零寄存器。请参阅优化手册, 3.5.1.8清除寄存器和依赖性破坏惯用语部分。