1. 程式人生 > >2017-11-15 深刻理解堆疊及PUSH POP指令

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