2017-11-15 深刻理解堆疊及PUSH POP指令
1、使用3種方式實現:pushecx
mov ebx,0012ffc4 //棧頂
mov edx,0012ffe4 //棧底
sub ebx,4
mov dword ptr ds:[ebx],ecx
mov dword ptr ds:[ebx-4],ecx
sub ebx,4
lea ebx,dword ptr ds:[ebx-4]
mov dword ptr ds:[ebx],ecx
2、使用3種方式實現:pop ecx
mov ecx,dword ptr ds:[ebx]
add ebx,4
lea ebx,dword ptr ds:[ebx+4]
mov ecx,dword ptr ds:[ebx-4]
mov ecx,dword ptr ds:[ebx]
lea ebx,dword ptr ds:[ebx+4]
3、用兩種方式實現 push esp
Mov ebx,esp
Mov dword ptr ds:[ebx],esp
Sub ebx,4
Mov esp,ebx
Mov ebx,esp
Mov dword ptr ds:[ebx-4],ebx
Sub esp,4
4、用兩種方式實現 pop esp
Mov ebx,esp
mov esp,dword ptr ds:[ebx]
5、 使用EBX儲存棧底地址,EDX儲存棧頂地址,連續儲存5個不同的數
MOV EBX,ESP
MOV EDX,EBP
MOV DWORD PTR DS:[EBX-4],111111>
SUB EBX,4
MOV DWORD PTR DS:[EBX-4],222222>
SUB EBX,4
MOV DWORD PTR DS:[EBX-4],333333>
SUB EBX,4
MOV DWORD PTR DS:[EBX-4],444444>
SUB EBX,4
MOV DWORD PTR DS:[EBX-4],555555>
SUB EBX,4