堆栈

是一个连续的内存区域 大小为4gb
由ss段寄存器标记其实位置

内存中的cc是怎么来的?
push edi
push esi
mov ecx,3F
mov esi,0xcccccccch
image.png
下一条EIP=当前EIP+当前指令字节长度

分析study08

image.png
image.png
image.png
生成exe方便观察

汇编里边不存在调到一个函数之后不能改变main里边的局部变量,

CDQ:实际的作用只是把EDX的所有位都设成EAX最高位的值。也就是说,当EAX <80000000, EDX 为00000000;当EAX >= 80000000, EDX 则为FFFFFFFF。

伪指令enter imm1,imm2

高级开辟栈帧指令
第一个操作数指令栈帧大小
第二个操作数给出堆栈嵌套层数(0-31)
—当嵌套层数为0时
—push ebp
—mov ebp,esp
—sub esp,imm1

常与leave指令成对出现
pop ebp
mov esp ,ebp
add esp+imm1

image.png