2.04 标志寄存器
1.写出下面每条指令执行后,ZF、PF、SF等标志位的值。
答:
sub al,al ZF=1 PF=1 SF=0
mov al,1 ZF=1 PF=1 SF=0
push ax ZF=1PF=1SF=0
pop bx ZF=1PF=1SF=0
add al,bl ZF=0PF=0SF=0
add al,10 ZF=0PF=1SF=1
mul al ZF=0PF=1SF=0
2.写出下面每条指令执行后,ZF、PF、SF、CF、OF等标志位的值。
CF OF SF ZF PF
sub al,al
mov al,10h
add al,90h
mov al,80h
add al,80h
mov al,0fch
add al,05h
mov al,7dh
add al,0bh
答:
sub al,al
CF OF SF ZF PF
0 0 0 1 1
mov al,10H ; MOV 指令不影响 Flag
CF OF SF ZF PF
0 0 0 1 1
add al,90H ; 作无符号数,A0H无进位,当作有符号数,16+(-112),在-128~127,无溢出
CF OF SF ZF PF
0 0 1 0 1
mov al,80H ; MOV 指令不影响 Flag
CF OF SF ZF PF
0 0 1 0 1
add al,80H ;作无符号数,100H,进位,作有符号数,(-128)+(-128),不在-128~127,溢出
CF OF SF ZF PF
1 1 0 1 1
mov al,0FCH ; MOV 指令不影响 Flag
CF OF SF ZF PF
1 1 0 1 1
add al,05H ; 无符号,有进位,有符号,(-4)+5=1,在-128~127,无溢出
CF OF SF ZF PF
1 0 0 0 0
mov al,7DH ; MOV 指令不影响 Flag
CF OF SF ZF PF
1 0 0 0 0
add al,0BH ; 无符号数,无进位,有符号数 125+12=137,不在-128~127,溢出
CF OF SF ZF PF
0 1 1 0 1
3.请说说标志CF和标志OF的差异。
答: 如果把指令中处理的数据按照无符号数看待,则处理结果达到进位是,置CF为1;
如果把该处理中的数据按照有符号数看待,则处理结果超过有符号数表达范围的,
置OF为1;两个标志同步进行,CPU并不知道该数的类型;
4.8086/8088标志寄存器中定义了哪些标志?这些标志可分为哪两类?如何改变这些标志的状态?
答: 8086/8088标志寄存器中定义了9个标志,如下:
CF: Carry Flag
ZF: Zero Flag
SF: Sign Flag
OF: Overflow Flag
PF: Parity Flag
AF: Auxiliary Carry Flag
DF: Direction Flag
IF: Interrupt-enable Flag
TF: Trap Flag
这些标志可分为两类,分别为:
1、运算结果标志;
2、状态控制标志;
采用指令SAHF可把AH中的指定位送至标志寄存器低8位SF、ZF、AF、PF、CF;
采用CLC可清除CF,置CF到0
采用STC可置CF到1
采用CLD可置DF到0
采用STD可置DF到1
采用CLI可置IF到0
采用STI可置IF到1
另外,在某些指令执行过程中会改变部分标志的状态;
5.请写出如下程序片段中每条算术运算指令执行后标志CF、ZF、SF、OF、PF、AF的状态。
mov al,89h
add al,al
add al,9dh
cmp al,0bch
sub al,al
dec al
inc al
自己动手网上查资料,或者利用debug工具得出结果;
答: INSTRUCTION CF ZF SF OF PF AF
MOV AL,89H 0 0 0 0 0 0
ADD AL,AL 1 0 0 1 1 1
ADD AL,9DH 0 0 1 0 1 0
CMP AL,0BCH 1 0 1 0 1 0
SUB AL,AL 0 1 0 0 1 0
DEC AL 0 0 1 0 1 1
INC AL 0 1 0 0 1 1
6.请写出如下程序片段中每条逻辑运算指令执行后标志ZF、SF、PF的状态:
mov al,45h
and al,0fh
or al,0c3h
xor al,al
答: INSTRUCTION ZF SF PF
MOV AL,45H 0 0 0
AND AL,0FH 0 0 1
OR AL,0C3H 0 1 0
XOR AL,AL 1 0 1
7.请写出如下程序片段中每条移位指令执行后标志CF、ZF、SF、PF的状态
mov al,84h
sar al,1
shr al,1
ror al,1
rcl al,1
shl al,1
rol al,1
答: INSTRUCTION CF ZF SF PF
MOV AL,84H 0 0 0 0
SAR AL,1 0 0 1 0
SHR AL,1 0 0 0 0
ROR AL,1 1 0 0 0 (该命令不影响SF位)
RCL AL,1 1 0 0 0
SHL AL,1 0 0 1 0
ROL AL,1 1 0 1 0
2.04 标志寄存器相关推荐
- 标志寄存器及其标志位
标志寄存器: CPU内部的寄存器,(对于不同的处理机,个数和结构都可能不同)具有三种作用: 用来存储相关指令的某些执行结果: 用来为CPU执行相关指令提供行为依据: 用来控制CPU的相关工作方式. 8 ...
- 一个奇葩的标志寄存器 flag寄存器
注意: mov,push,pop等传送指令,执行结果对标志寄存器并无影响! ZF标志:结果为0,则ZF为1:不为0,ZF为0:(zero flag) PF标志:如果1的个数为偶数,pf=1:如果为奇数 ...
- 标志寄存器的详细解释
简介: CPU内部的寄存器中,有一种特殊的寄存器(对于不同的处理机,个数和结构都可能不同)具有三种作用. (1)用来存储相关指令的某些执行结果. (2)用来为CPU执行相关指令提供行 ...
- 汇编语言随笔(3)-条件转移指令和标志寄存器
标志寄存器 标志寄存器通常具有以下三种作用: 1,用来存储相关指令的某些执行效果 2,用来为CPU执行相关指令提供行为依据 3,用来控制CPU的相关工作方式 ...
- 汇编语言--标志寄存器
标志寄存器 CPU内部的寄存器中,有一种特殊的寄存器(对于不同的处理机,个数和结构都可能不同)具有以下3种作用. 用来存储相关指令的某些执行结果: 用来为CPU执行相关指令提供行为依据: 用 ...
- 8086汇编复习3 - 标志寄存器 - 使用emu8086
1 认识标志寄存器 标志寄存器 CPU内部有一种寄存器,具有三种作用: 1)存储相关指令的某些执行结果: 2)用来为CPU执行相关指令提供行为依据: 3) 用来控制CP ...
- 汇编中的通用寄存器、标志寄存器、段寄存器
通用寄存器: 寄存器和变量差不多,目的都是用于保存一些即将操作的数据 EAX(accumulator) 寄存器:扩展累加寄存器(一般在乘/除中会被主动调用),也可以用于其他用途 ECX(Count) ...
- 《汇编语言(第三版)》pushf 和 popf 指令,以及标志寄存器在 Debug 中的表示
pushf 和 popf pushf 的功能是将标志寄存器的值压栈,而 popf 是从栈中探出数据,输入标志寄存器. pushf 和 popf,为直接访问寄存器提供了方法. 格式 pushf popf ...
- 《汇编语言(第三版)》标志寄存器
标志寄存器 8086CPU中的flag寄存器包括: CF.PF.ZF.SF.OF.DF. 传送指令不影响标志寄存器 ZF标志寄存器 zf标志寄存器位于flag中的第6为,表示零标志位.(至于flag是 ...
最新文章
- 难以置信的目标检测小妙招:多训练几个epochs,平均一下就能获得更好的模型...
- 基于大数据的Uber数据实时监控(Part 4:Spark Streaming、DataFrames和HBase)
- VMware虚拟机安装红帽系统无法上网解决办法(转)
- 客户挽留:信用卡客户流失管理
- 如何更改Visual Studio 2008中类文件引用的默认名称空间?
- 三相阻容降压供电DCDC电源
- 几行代码创建属于你自己的SQL数据库
- AOJ0006 Reverse Sequence【堆栈+字符流】
- 雨林木风windows7旗舰版
- ubuntu cmakelists 配置海康 SDK
- VS使用教程(使用visual studio编写C语言程序),编写c的入门教程
- 职称计算机xp上机考试内容,全国职称计算机考试WindowsXP中文操作系统模块最新上机操作试题(1-12套)...
- 美化Hexo 个人博客
- 响应式 BootStrap 媒体查询 栅格 组件 scss
- 大数据发展前景及就业方向【大数据专业讲座】
- 左边是地狱右边也是地狱_像我这样的设计师的特别地狱
- java 汽车加油问题_贪心算法 汽车加油问题 | 学步园
- SpringBoot集成权限认证框架(Sa-Token)
- 【项目】健康项目day5总结
- MixMarvel行业分享专栏 韩国区块链市场观察:行业巨头布局区块链游戏领域