很少记录汇编的东西,不过做逆向必须用到,特此记录。
EAX 累加器 EBX 基址 ECX 计数器 EDX 数据 ESI 源指针? EDI 目标指针 ESP 栈指针 EBP 基址指针
其中ESP EBP常作为程序的入口和出口点。栈顶和栈底。
EBX ESI EDI必须保留。比如你要调用WINAPI必须先保存这3个寄存器。调用结束后再做恢复。所以写汇编过程中可以把这3个寄存器作为计数器或者变量。
EAX ECX EDX 常用运算。
[ebp+8]常作为变量存储地址的开始。
PUSHAD POPAD 保存和恢复现场。
地址变量:
[ Base Address + Index * Scale + Displacement ]
[ebx + ecx * 4 + 8]
ebx is the base address. base
ecx is the index. counter
4 is the scale based on the data size.
8 is the displacement in BYTES.
区段寄存器
| CS | code segment |
| DS | data segment |
| SS | stack segment |
| ES | extra segment |
| FS (only 286+) | general purpose segment |
| GS (only 386+) | general purpose segment |
运算符
MOV ADD SUB MUL DIV
AND OR XOR NOT
INC DEC
SHL SHR 左移和右移补0
SAL SAR ..左移和右移补1
TEST 做and运算


