pushf的功能是将标志寄存器的值压栈,而popf是从栈中弹出数据,送入标志寄存器中。 pushf和popf,为直接访问标志寄存器提供了一种方法。
pushf:指令将标志寄存器的内容压入堆栈,同时栈顶指针SP减2,这条指令可用来保存全部标志位。
popf:指令将栈顶字单元内容送标志寄存器,同时栈顶指针SP加2。
格式
pushf popf
这两条指令后面都不加东西,默认的操作对象是:所有的标志寄存器。
练习
下面的程序执行后:(ax)=?
mov ax,0 push ax popf mov ax,0fff0h add ax,0010h pushf pop ax and al,11000101B and ah,00001000B
PUSH和POP是把一个字入栈、出栈
比如:
PUSH AX ;AX入栈 POP AX ;弹出到AX
而PUSHF和POPF是把标志寄存器入栈、出栈
比如:
PUSHF ;标志寄存器入栈 POPF ;弹出到标志寄存器
如果调用子程序时需要保存标志寄存器,就用PUSHF和POPF
一般中断服务子程序用的多些。
总结
标志 值为1的标记 值为0的标记 of OV NV sf NG PL zf ZR NZ pf PE PO cf CY NC df DN UP