在x86彙編語言中,有沒有辦法獲得EAX
寄存器的上半部分?我知道AX
寄存器已經包含EAX
寄存器的下半部分,但我還不知道有什麼方法可以獲得上半部分。獲取EAX寄存器的上半部分
我知道mov bx, ax
會的eax
下半部進入bx
,但我想知道怎樣的eax
上半進入bx
爲好。
在x86彙編語言中,有沒有辦法獲得EAX
寄存器的上半部分?我知道AX
寄存器已經包含EAX
寄存器的下半部分,但我還不知道有什麼方法可以獲得上半部分。獲取EAX寄存器的上半部分
我知道mov bx, ax
會的eax
下半部進入bx
,但我想知道怎樣的eax
上半進入bx
爲好。
rol eax, 16
mov bx, ax
rol eax, 16
在這種情況下,eax是否會恢復到其原始值? – 2013-03-05 18:34:23
是的,會的。 'rol'和'ror'循環地循環移位。請參閱文檔。 – 2013-03-05 18:37:39
或只是'shr eax,16'? – AminM 2014-12-21 09:15:18
我會做這樣的:
mov ebx,eax
shr ebx, 16
EBX現在包含EAX的前16位
如果你不介意的轉移的bx
原始值(低16位ebx
)到高位16位的ebx
,只需要1條指令:
shld ebx,eax,16
這不會修改eax
。
只需將其下移16位即可。 – Mysticial 2013-03-05 17:28:15
或者'shr eax,16'隨後移動。 (這會破壞'eax'),或者做'mov ebx,eax'和'shr ebx,16'(它將'ebx'的上半部分置零)我不確定在'bx'上執行操作是否會自動將無論如何,'ebx'的上半部分。所以如果是這樣的話,你可能會用後一種方法。 – Mysticial 2013-03-05 17:32:04
'ror eax,16'' mov bx,ax''or eax,16'如果你想離開eax/ebx的上半部分 – user786653 2013-03-05 17:44:04