我是靠谱客的博主 虚心可乐,最近开发中收集的这篇文章主要介绍PUSHAD 和 PUSHFD,觉得挺不错的,现在分享给大家,希望可以做个参考。

概述

来自:“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所遇到的程序开发问题。

如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。

本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
点赞(49)

评论列表共有 0 条评论

立即
投稿
返回
顶部