汇编语言检测点11.4详细解析

汇编语言检测点11.4

建议先自己思考问题的答案,不懂则返回看书
下面的程序执行后:(ax)= ?
析: pushf 和 popf 是对标志寄存器的操作指令,本质上还是对数据的操作,标志寄存器是16位,与通用寄存器(ax,bx……)不一样的是它是按“位”起作用的,即每一“位”都有它自己的含义,而通用寄存器整体表示一个含义。
在这里插入图片描述
具体分析:

mov ax,0
push ax				
popf				;弹出的即push进的AX的值,即将AX的值给了标志寄存器,此时标志寄存器的16位都是零

mov ax,0fff0h
add ax,0010h		;add完后结果是10000H,显然无符号数计算有进位,所以CF=1,无符号数对OF不起作用,所以OF=0,
					;值未变,SF=0,PF=1,ZF=1,DF=0,
					;所以该指令执行完毕后,标志寄存器为:0000 0000 0100 0101

pushf				;将标志寄存器的值压栈
pop ax				;即将压入栈中的标志寄存器的值弹出给ax,此时AX=0000 0000 0100 0101
and al,11000101b	;执行完毕后,al=0100 0101 = 45H
and ah,00001000b	;执行完毕后,ah=0000 0000 = 00H
					;所以AX=0045H
  • 5
    点赞
  • 9
    收藏
    觉得还不错? 一键收藏
  • 8
    评论
评论 8
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值