2014-05-06 295 views

回答

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?

3

由於bhebx的第二低字節,所以您可以只做mov ebx, 0x0400

xor被使用,因爲它是較短的操作碼,並且處理器有特殊的支持來將其識別爲清零寄存器。請參閱優化手冊,部分3.5.1.8清除寄存器和依賴打破習語