寄存器:
32 16 8
EAX 0 EAX AH AL
ECX 1 ECX CH CL
EDX 2 EDX DH DL
EBX 3 EBX BH BL
ESP 4 ESP
EBP 5 EBP
ESI 6 ESI
EDI 7 EDI
mov eax, dword ptr ds:[0x12ffc4]
或
mov eax, 0x12ffc4
mov ecx, dword ptr ds:[eax]
者是:以0x12ffc4为首地址的连续4个字节的内存单元中的值放到EAX中
lex ecx, dword ptr ds:[eax]
把eax中存放的值, 放入ecx中(与mov有区别, 一个是值, 一个是值为首地址的内存单元中的值)
标志寄存器 (容器宽度)
进位标志位
CF: 只看最高位, 两者相加溢出CF=1(无符号)
奇偶标志位
P: 转为二进制后, 如果1的个数为偶, P位为1, 否则为0(只看最低有效字节)
辅助进位标志位
A: FFFF(16位只看倒数第二个F中的最高位)
FF(8位看倒数第一个F中的最高位)
零位标志位
ZF:计算的结果为0, 则ZF=1
符号标志位
SF: 二进制的最高位为1,SF=1
溢出标志位
OF: 无符号只看C位, 即CF
有符号看O, 即OF 1000 | 1100 = 0100 最高两位即 0 xor 1 = 1; OF=1
方向标志位
D: 当该位为0时, movs或stos为加;为1时, 反之;(esi, edi)
JMP 无条件修改EIP的值
CALL 等价 PUSH ESP
sub esp,0x4
mov dword ptr ds:[esp], eip+5(eip是还没进函数时的eip)
Ret 等价 pop eip
mov eip, dword ptr ds:[esp];
add esp, 4
单个函数堆栈图Debug版
release 版的是 esp在堆栈的移动来寻址内存, 基本变化不大

5410

被折叠的 条评论
为什么被折叠?



