2017-11-15 深刻理解堆栈及PUSH POP指令

xiaoxiao2021-02-28  26

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

转载请注明原文地址: https://www.6miu.com/read-1650156.html

最新回复(0)