PUSH、POP指令要点 注意进栈和出栈的顺序 入栈: 出栈(与入栈相反) PUSH EAⅩ POP EDX PUSH EBX POP ECX PUSH ECX POP EBX PUSH EDX POP EAX
3.PUSH、POP指令要点 注意进栈和出栈的顺序 入栈: PUSH EAX PUSH EBX PUSH ECX PUSH EDX 出栈 (与入栈相反) POP EDX POP ECX POP EBX POP EAX
4. PUSHFD指令 格式: PUSHFD 功能:堆栈指针ESP减4, EFLAGS标志寄存 器保存在ESP指向的堆栈单元中。 举例:将 EFLAGS标志寄存器复制到EAX中 PUSHFD POP EAX
4.PUSHFD指令 格式:PUSHFD 功能:堆栈指针ESP减4,EFLAGS标志寄存 器保存在ESP指向的堆栈单元中。 举例:将EFLAGS标志寄存器复制到EAX中 PUSHFD POP EAX
5. POPFD指令 格式: POPFD 功能:从ESP指向的堆栈单元中取出数据送 到 EFLAGS中,堆栈指针ESP加4。 举例: PUSHFD和 POPFD可以配对使用,用来保存 和恢复程序某一时刻的标志。 PUSHFD ;保存状态寄存器 ;执行其他的指令 POPFD ;恢复状态寄存器
5.POPFD指令 格式:POPFD 功能:从ESP指向的堆栈单元中取出数据送 到EFLAGS中,堆栈指针ESP加4。 举例:PUSHFD和POPFD可以配对使用,用来保存 和恢复程序某一时刻的标志。 PUSHFD ; 保存状态寄存器 … ; 执行其他的指令 POPFD ; 恢复状态寄存器
6. ENTER指令 格式: ENTER SRC1,SRC2 功能:SRC1和SRC2是两个立即数。 SRC2=0时,该指令相当于下面的3条指令 PUSH EBP Mov EBP ESP SUB ESP SRC1
6.ENTER指令 格式:ENTER SRC1, SRC2 功能:SRC1和SRC2是两个立即数。 SRC2=0时,该指令相当于下面的3条指令 PUSH EBP MOV EBP, ESP SUB ESP, SRC1
7.LEAV指令 格式: LEAVE 功能:令ESP等于EB,再从堆栈弹出EBP 相当于: MOV ESP. EBP POP EBP 常用于子程序返回之前
7.LEAVE指令 格式:LEAVE 功能:令ESP等于EBP,再从堆栈弹出EBP。 相当于: MOV ESP, EBP POP EBP 常用于子程序返回之前