Значения, которые сохраняются в соответствующем регистре после выполнения - PullRequest
0 голосов
/ 29 марта 2020

ВОПРОС: Заполните пропуски значениями, которые сохранены в соответствующем регистре после выполнения соответствующей строки. Введите все значения в шестнадцатеричном и 32-битном формате.

МОЕ МЫШЛЕНИЕ: Я новичок в Ассамблее. Я знаю, что такие значения, как EAX, EBX, ECX, EDX, ESI, EDI, ESP или EBP предназначены для любого 32-разрядного регистра. Или значения как AX, BX, CX или DX для любого 16-битного регистра. Я читал, что xor eax, eax - обнулить содержимое EAX. Это означает, что первый разрыв 0x00000000, верно? Второй разрыв копирует 0x12345678 в EAX. Это означает, что eax = 0x12345678. 3-й разрыв также должен быть 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)

1 Ответ

0 голосов
/ 29 марта 2020
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)

Я думаю, что понял.

...