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清除寄存器和依賴打破習語。