- Как представляются целые числа и строки в памяти
- Какие в ассемблере бывают "типы" (на самом деле размеры) данных
- О разных ассемблерных командах
- О разных вариантах команды MOV
- Достаточно подробный справочник-учебник по x86 ассемблеру: link
- Таблица системных вызовов для х86: link
- Красивый туториал по x64 ассемблеру: link
- (Снова) Цикл коротких лекций об ассемблере от команды HackerDom. Must see!
Задание 0
mov [0xAABBCCCD], 0x11C0FFEE
mov [0xAABBCCD1], 0x12345678
mov [0xAABBCCD5], 0xCAFEBABE
mov [0xAABBCCD9], 0xDEADBEEF
lea edi, [0xAABBCCDD]
lea esi, [0xAABBCCD9]
xor ebx, ebx
l1:
mov eax, DWORD [esi]
mov [edi], eax
sub esi, 4
add ebx, 4
cmp ebx, 0x10
jl l1
Что будет в ячейке [0xAABBCCD5]?
Задание 1
xor eax, eax
xor ebx, ebx
xor ecx, ecx
xor edx, edx
Label0:
add eax, 10
add ebx, 20
sub ebx, eax
cmp eax, ebx
jl Label5
jge Label4
Label1:
add ecx, ecx
add ecx, ecx
sub edx, ecx
cmp edx, eax
je finish
jmp Label2
Label2:
xor ecx, edx
add edx, edx
sub edx, ecx
jmp Label0
Label3:
xor edx, ecx
xor edx, eax
cmp edx, eax
jne Label1
jg Label2
jl finish
Label4:
mov edx, 50
mov ecx, 10
cmp eax, edx
jg Label5
jmp Label3
Label5:
mov edx, 10
mov ecx, 50
jmp Label0
finish:
Чему будет равен eax на метке finish?