再问个pushf和popf的问题!

时间:2021-07-04 00:27:35
pushf是把标志寄存器中的哪几位的值压栈?

popf从栈中弹出几个数据送入标志寄存器?

12 个解决方案

#1


pushf应该是将标志寄存器中的全部数据都存入栈中吧
popf对应的就是取出数据了
不是把标志寄存器中的一部分数据送入栈中

#2


pushf:指令将标志寄存器的内容压入堆栈,同时栈顶指针SP减2,这条指令可用来保存全部标志位。
popf:指令将栈顶字单元内容送标志寄存器,同时栈顶指针SP加2。

#3


那popf是把栈中所有数据送入标志寄存器?

#4


pushf,popf作用主要是把状态寄存器的值做一个保护的操作!说明你pushf下面的程序将有可能用到或改变状态寄存器的值,popf之后就把状态寄存器的值恢复到改变之前的值!
跟pusha/popa和pushad,popad的作用原理一样的是保存现场和恢复现场的作用!
像pusha是把ax,bx,cx,dx依次压栈,而popa则是将dx,cx,bx,ax依次弹出,
栈的操作是先入后出。

#5


pushf:指令将标志寄存器的内容压入堆栈,同时栈顶指针SP减2,这条指令可用来保存全部标志位。
popf:指令将栈顶字单元内容送标志寄存器,同时栈顶指针SP加2。

#6


全部.

#7


引用 4 楼 www_china__blue 的回复:
pushf,popf作用主要是把状态寄存器的值做一个保护的操作!说明你pushf下面的程序将有可能用到或改变状态寄存器的值,popf之后就把状态寄存器的值恢复到改变之前的值!
跟pusha/popa和pushad,popad的作用原理一样的是保存现场和恢复现场的作用!
像pusha是把ax,bx,cx,dx依次压栈,而popa则是将dx,cx,bx,ax依次弹出,
栈的操作是先入后出。

学习~~

#8


引用 4 楼 www_china__blue 的回复:
pushf,popf作用主要是把状态寄存器的值做一个保护的操作!说明你pushf下面的程序将有可能用到或改变状态寄存器的值,popf之后就把状态寄存器的值恢复到改变之前的值!
跟pusha/popa和pushad,popad的作用原理一样的是保存现场和恢复现场的作用!
像pusha是把ax,bx,cx,dx依次压栈,而popa则是将dx,cx,bx,ax依次弹出,
栈的操作是先入后出。

状态寄存器是什么?

#9


引用 8 楼 gcrdf 的回复:
引用 4 楼 www_china__blue 的回复:
pushf,popf作用主要是把状态寄存器的值做一个保护的操作!说明你pushf下面的程序将有可能用到或改变状态寄存器的值,popf之后就把状态寄存器的值恢复到改变之前的值!
跟pusha/popa和pushad,popad的作用原理一样的是保存现场和恢复现场的作用!
像pusha是把ax,bx,cx,dx依次压栈,而popa则是将dx……

就是cpu内部一个特殊的寄存器, 学名:标志寄存器。 作用有三:其一用来存贮相关指令的结果,其二是用来为cpu执行指令提供依据。其三用来控制cpu相关的工作方式。

#10


标志寄存器,里面存储的信息称为程序状态字(psw),该寄存器按位起作用并且只有某些特定的位有意义,用于存储指令执行结果。

#11


一般用在需要临时操作tf、df之类功能比较特殊的标志位时,保护环境用的。

#12


PUSHF把整个状态寄存器16位全部压栈保存,POPF再完全弹出回复。

#1


pushf应该是将标志寄存器中的全部数据都存入栈中吧
popf对应的就是取出数据了
不是把标志寄存器中的一部分数据送入栈中

#2


pushf:指令将标志寄存器的内容压入堆栈,同时栈顶指针SP减2,这条指令可用来保存全部标志位。
popf:指令将栈顶字单元内容送标志寄存器,同时栈顶指针SP加2。

#3


那popf是把栈中所有数据送入标志寄存器?

#4


pushf,popf作用主要是把状态寄存器的值做一个保护的操作!说明你pushf下面的程序将有可能用到或改变状态寄存器的值,popf之后就把状态寄存器的值恢复到改变之前的值!
跟pusha/popa和pushad,popad的作用原理一样的是保存现场和恢复现场的作用!
像pusha是把ax,bx,cx,dx依次压栈,而popa则是将dx,cx,bx,ax依次弹出,
栈的操作是先入后出。

#5


pushf:指令将标志寄存器的内容压入堆栈,同时栈顶指针SP减2,这条指令可用来保存全部标志位。
popf:指令将栈顶字单元内容送标志寄存器,同时栈顶指针SP加2。

#6


全部.

#7


引用 4 楼 www_china__blue 的回复:
pushf,popf作用主要是把状态寄存器的值做一个保护的操作!说明你pushf下面的程序将有可能用到或改变状态寄存器的值,popf之后就把状态寄存器的值恢复到改变之前的值!
跟pusha/popa和pushad,popad的作用原理一样的是保存现场和恢复现场的作用!
像pusha是把ax,bx,cx,dx依次压栈,而popa则是将dx,cx,bx,ax依次弹出,
栈的操作是先入后出。

学习~~

#8


引用 4 楼 www_china__blue 的回复:
pushf,popf作用主要是把状态寄存器的值做一个保护的操作!说明你pushf下面的程序将有可能用到或改变状态寄存器的值,popf之后就把状态寄存器的值恢复到改变之前的值!
跟pusha/popa和pushad,popad的作用原理一样的是保存现场和恢复现场的作用!
像pusha是把ax,bx,cx,dx依次压栈,而popa则是将dx,cx,bx,ax依次弹出,
栈的操作是先入后出。

状态寄存器是什么?

#9


引用 8 楼 gcrdf 的回复:
引用 4 楼 www_china__blue 的回复:
pushf,popf作用主要是把状态寄存器的值做一个保护的操作!说明你pushf下面的程序将有可能用到或改变状态寄存器的值,popf之后就把状态寄存器的值恢复到改变之前的值!
跟pusha/popa和pushad,popad的作用原理一样的是保存现场和恢复现场的作用!
像pusha是把ax,bx,cx,dx依次压栈,而popa则是将dx……

就是cpu内部一个特殊的寄存器, 学名:标志寄存器。 作用有三:其一用来存贮相关指令的结果,其二是用来为cpu执行指令提供依据。其三用来控制cpu相关的工作方式。

#10


标志寄存器,里面存储的信息称为程序状态字(psw),该寄存器按位起作用并且只有某些特定的位有意义,用于存储指令执行结果。

#11


一般用在需要临时操作tf、df之类功能比较特殊的标志位时,保护环境用的。

#12


PUSHF把整个状态寄存器16位全部压栈保存,POPF再完全弹出回复。