概述
来自:“http://blog.sina.com.cn/s/blog_af95b18b0101hmx0.html”
pushad: 将所有的32位通用寄存器压入堆栈
pusha:将所有的16位通用寄存器压入堆栈
pushfd:然后将32位标志寄存器EFLAGS压入堆栈
pushf::将的16位标志寄存器EFLAGS压入堆栈
popad:将所有的32位通用寄存器取出堆栈
popa:将所有的16位通用寄存器取出堆栈
popfd:将32位标志寄存器EFLAGS取出堆栈
popf:将16位标志寄存器EFLAGS取出堆栈
_asm pushad
_asm pushfd
// 处理代码
_asm popfd
_asm popad
ZC: 观察OD中,pushad 是将 EAX,ECX,EDX,EBX,ESP,EBP,ESI,EDI 这8个32位寄存器压入栈中
ZC: 观察OD中,是将8个32位寄存器在执行pushad前的值 压入栈中,压入的顺序依次为 EAX,ECX,EDX,EBX,ESP,EBP,ESI,EDI
ZC: popad 出站的顺序,和上面正好相反,但有一点: 不管ESP对应位置的值是什么 ESP的值都不会设置成这个值,ESP的值还是按照弹栈的方式来就按。(EDP的值是会被设置成对应位置的值的)
X
转载于:https://www.cnblogs.com/assemblyskill/p/5579368.html
最后
以上就是虚心可乐为你收集整理的PUSHAD 和 PUSHFD的全部内容,希望文章能够帮你解决PUSHAD 和 PUSHFD所遇到的程序开发问题。
如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。
本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
发表评论 取消回复