执行后保存在相应寄存器中的值

问题描述 投票:0回答:1

问题:在执行相应的行之后,用保存在相应寄存器中的值填充空白。以十六进制和32位输入所有值。

我的想法:我是新来的Assembly。我知道EAX,EBX,ECX,EDX,ESI,EDI,ESP或EBP之类的值适用于任何32位寄存器。或者像AX,BX,CX或DX这样的值适用于任何16位寄存器。我已经读过xor eax,eax-将EAX的内容设置为零。这意味着第一个间隙是0x00000000,对吗?第二个间隙将0x12345678复制到eax中。这意味着eax = 0x12345678。第三个间隙也应为0x00000000,因为0将值复制到ebx?对于其他差距,我什么也找不到。

xor eax, eax           ; eax = 0x00000000 (Gap 1)
mov eax, 0x12345678    ; eax = 0x12345678 (Gap 2)
mov ebx, 0
mov bx, ax             ; ebx = 0x00005678 (Gap 3)
mov bl, ah             ; ebx = 0x00005656 (Gap 4)
mov eax, 0xFFFFFFFF   
sar eax, 8             ; eax = 0xFFFFFFFF (Gap 5)
shr eax, 8             ; eax = 0x00000000 (Gap 6)
sar eax, 8             ; eax = 0x00000000 (Gap 7)
ror eax, 8             ; eax = 0x00000000 (Gap 8)
assembly x86 cpu-registers
1个回答
0
投票
mov eax, 0x12345678    ; eax = 0x12345678 (Gap 2)
mov ebx, 0
mov bx, ax             ; ebx = 0x00005678 (Gap 3)
mov bl, ah             ; ebx = 0x00005656 (Gap 4)
mov eax, 0xFFFFFFFF   
sar eax, 8             ; eax = 0xFFFFFFFF (Gap 5)
shr eax, 8             ; eax = 0x00FFFFFF (Gap 6)
sar eax, 8             ; eax = 0x0000FFFF(Gap 7)
ror eax, 8             ; eax = 0xFF0000FF(Gap 8)
© www.soinside.com 2019 - 2024. All rights reserved.