pushf 的功能是将标志寄存器的值压栈,而 popf 是从栈中弹出数据,输出标志寄存器的值。
以下是举例 pushf 和 popf指令的使用
assume cs:code, ds:data, ss:stack
data segment
db 128 dup(0)
data ends
stack segment stack
db 128 dup(0)
stack ends
code segment
start:
mov ax, 0 ; ax = 0000 0000 0000 0000
push ax
popf ; PSW = 0000 0000 0000 0000
mov ax, 0FFF0H ; ax = 0FFF0H
add ax, 0010H ; PSW = 0000 0000 0100 0101
pushf ; 将所有的标志位 存入栈中
pop ax ; ax = 0000 0000 0010 1111
and al, 0C5H ;1100 0101B al = 0100 0101
and ah, 8H;0000 1000B ; ax = 0000 0000 0100 0101 ax = 0045H
mov ax, 4C00H
int 21H
CODE ENDS ; 结束
END START