(四)PUSH、POP、PUSHAD与PUSHFD

PUSH:往ESP-4的内存地址存入数据,并且esp的值减存入的数据宽度

push 0x12345678

 

mov dword ptr ds: [esp-4],eax   //存入数据

lea esp , dword ptr ds: [esp-4]  //提升栈顶

POP:将栈顶的数据复制到指定的容器,ESP并加上该弹出数据的宽度

POP eax  //将栈顶4字节复制到EAX,ESP加4

mov eax,dword ptr ds: [ESP]

LEA ESP ,DWORD PTR DS: [ESP+4]

 

PUSHAD :将每个寄存器依次push到栈顶,栈顶提升

相当于依次PUSH EAX ; PUSH ECX ; PUSH EDX ; PUSH EBX……PUSH EDI

POPAD:将栈顶的值依次弹出到EDI ESI EBP ESP EBX EDX ECX EAX

与PUSHAD 构成恢复现场

PUSHDF:将EFL 标志寄存器PUSH到栈顶,栈顶提升

POPDF:将栈顶的数据弹出到EFL 标志寄存器  //可以push到内存然后修改后再POP带EFL 这样就可以快速修改多个标志寄存器位

posted @ 2016-12-21 22:16  晓晓晓  阅读(1753)  评论(0编辑  收藏  举报