第11章 标志寄存器汇总

合集下载
相关主题
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

执行部件(EU)
总线接口部件(BIU)
标志寄存器
用来存储 程序状态字 PSW
用来存储指令的执行结果 用来为CPU执行相关指令提供行为依据 用来控制CPU的相关工作方式
标志寄存器
CF : 进位标志 PF : 奇偶标志 AF : 辅助进位标志 ZF : 零标志 SF : 符号标志 TF : 单步中断标志 IF : 中断标志 DF : 方向标志 OF : 溢出标志
;条件不满足,顺序执行。
指定的条件XX如果成立,程序转移到由标号LABEL指定的目 标地址去执行指令;条件不成立,则程序将顺序执行下一条 指令。
操作数LABEL是采用短转移,称为相对寻址方式。
JXX指令不影响标志,但要利用标志。根据利用的标志位不 同分成以下几种情况。
(1)根据单个条件标志的设置 情况转移
问题:
data segment db 8, 11, 8, 1, 8, 5, 63, 38
data ends 统计data段中数值为8的字节的个数,用
ax保存结果
问题:
data segment db 8, 11, 8, 1, 8, 5, 63, 38
data ends 统计data段中数值大于8的字节的个数,
IMUL指令——若乘积的高一半是低 一半的符号扩展,则OF=CF=0;否 则均为1。
除法指令DIV 和 IDIV 对标志位的 影响未定义,但是会产生溢出
指令对标志位的影响分为3种:
1、基于运算结果影响标志位 2、不影响标志位 3、对标志位的影响未定义
注:带符号除法的余数符号和被除数符号相同。
add al, 80h
mov al, 0fch
add al, 05h
mov al, 7dh
add al, 0bh
乘法指令只影响 OF 和 CF
MUL指令——若乘积的高一半(AH 或DX)为0,则OF=CF=0;否则 OF=CF=1。(用来检查字节相乘的 结果是字节还是字,或字相乘的结 果是字还是双字)
如果溢出,则OF置1,否则置0
问题: 什么是溢出? 溢出和进位有什么区别? 如何判断是否溢出?
举例: n=8 bit 带符号数(-128~127) , 无符号数(0~255)
0000 0100
+ 0000 1011
0000 1111
带:(+4)+(+11)=+1பைடு நூலகம் OF=0
无:4+11=15
(2)无符号数的条件转移指令
助记符
JB /JC JNB / JNC JBE / JNA JNBE
测试条件
CF = 1 CF = 0 CF∨ ZF =1 CF∨ ZF =0
功能描述
低于/进位位为1则转 移 不低于/进位位位0则 转移 低于或等于
不低于且不等于
(3)有符号数的条件转移指令
助记符
JL
测试条件 SF OF = 1
mov ax, 1 sub ax, 1
mov ax, 2 sub ax, 1
11.2 PF 奇偶标志
它记录相关指令执行后, 其结果的所有二机制 中1的个数是否为偶数。
如果1的个数是偶数, PF = 1 如果1的个数是奇数, PF = 0
mov al, 1 add al, 00001000b
mov al, 1 or al, 2
用ax保存结果
问题:
data segment db 8, 11, 8, 1, 8, 5, 63, 38
data ends 统计data段中数值小于8的字节的个数,
用ax保存结果
11.10 DF标志和串传送指令
movsb
功能:
将ds:[si] 如果DF = 0
si = si +1 di = di =1
第11章 标志寄存器
8086CPU组成结构
通用寄存器
AX AH AL BX BH BL CX CH CL DX DH DL
SP BP DI SI
ALU数据总线
地址总线20位
地址加法
数据总线
CS DS SS ES IP
内部Reg
总线 外部总线
控制
逻辑
运算寄存器
EU

ALU
制 系

标志 寄存器
指令队列 12 3 4 5 6
11.3 SF 符号标志
记录相关指令执行后,其结果是否为负
如果为负, SF = 1 如果为正, SF = 0
mov al, 10000001b add al, 1
理解:
有符号数 无符号数
检测点11.1
注意:
add 、sub 影响除 DF 、IF 、TF之外的 所有标志位
mul 指令只影响 OF 和 CF
inc 指令不影响 CF dec 指令不影响CF
11.6 adc 指令
带进位加法指令,它利用了CF位上记录的进 位值
格式
adc 操作数1, 操作数2
功能:
操作数1 = 操作数1 + 操作数2 + CF
问题:
编程, 计算 1EF0001000H + 2010001EF0H
问题:
编写一个子程序,对两个128位数据 进行相加
条件转移指令
条件转移指令是一组极其重要的转移指令,它根据标志寄存 器中的一个(或多个)标志位来决定是否需要转移,这就为 实现多功能程序提供了必要的手段。微机的指令系统提供了 丰富的条件转移指令来满足各种不同的转移需要,在编程序 时,要对它们灵活运用。
基本格式:
JXX LABEL ;条件满足,发生转移:IP←IP+位移量
0000 1001
+ 0111 1100
1000 0101
带: (+9)+(+124)=-133 OF=1
无: 9+124=133
CF=0
无符号数溢出 CF
位表示无符号数相加带的符溢号出数。溢出
OF 位表示带符号数相加的溢出。
OF 溢出标志
如何判断是否溢出?
如果正数溢出,则进入负数区 (正溢出) 如果负数溢出,则进入正数区 (负溢出)
CF=0
带符号数和无符号数都不溢出
1000 0111
+↑ 1 1 1 1 0 1 0 1 1 0111 1100
带:(-121)+(-11)=+134 OF=1
无:135+245=124
CF=1
带符号数和无符号数都溢出
0000 0111
+↑ 1 1 1 1 1 0 1 1 1 0000 0010 带:(+7)+(-5)=+2 OF=0 无:7+251=258 CF=1
如果DF = 1
si = si -1 di = di -1
es:[di] (字节操作)
DF标志和串传送指令
movsw
功能:
将ds:[si] 如果DF = 0
si = si +1 di = di =1
如果DF = 1
si = si -1 di = di -1
es:[di] (字操作)
mov al, 0f0h add al, 088h
mov al, 0f0 add al, 78h
检测点11.2
写出下面每条指令执行后,ZF、PF、SF、CF、OF等标志位的值
CF OF SF ZF PF
sub al, al
mov al, 10h
add al, 90h
mov al, 80h
标志分成两类: 状态标志——用来记 录程序运行结果的状 态信息,许多指令的 执行都将相应地设置 它。它们分别是:
CF ZF SF PF OF AF 控制标志——可由程
序根据需要用指令设 置,用于控制处理器 执行指令的方式。它 们分别是:
DF IF TF
11.1 ZF 零标志
它记录指令执行后,其结果是否为0
rep 指令
rep movsb rep movsw
CLD 将标志寄存器的DF清0 STD 将标志寄存器的DF置1
11.11 pushf 和 popf
11.12 标志寄存器在Debug中 的表示
实验11
如果结果为0,那么ZF = 1 如果结果不为0, 那么 ZF = 0
注意:
在指令集中,有的指令执行影响标志位。 如:add , sub , inc , or , and 他们大多是运 算指令;有的指令的执行不影响标志位,如: mov , push , pop 。他们大多是传送指令。
ZF 零标志
11.4 CF 进位标志
记录最高位是否有进位或借位
如果最高位有进位或借位,则置1,否则置0 通常用CF标志判断无符号数运算是否溢出
mov al, 98h
mov al, 97h
add al, al
sub al, 98h
add al, al
sub al, al
11.5 OF 标志
OF 记录有符号数运算的结果是否发生了 溢出。
如果是加法:
若两个操作数符号相同,而结果的符号与操作数符 号相反,则溢出。
若两个操作数符号相反,结果不会溢出。
如果是减法:
若两个操作数符号相反,而结果的符号与减数符号 相同,则溢出。否则不溢出。
若两个操作数符号相同,结果不会溢出。
OF 标志
判断以下指令执行后, CF 、 OF 的值 mov al, 98 add al, 99
; 名称: add128 ; 功能:两个128位数相加 ; 参数:ds:si 指向存储第一个数的
空间,ds:di指向存储第二个数的 空间
11.7 sbb 指令
带借位的减法指令,它利用了CF位上记录 的借位值。
格式
sbb 操作数1, 操作数2
功能:
操作数1 = 操作数1 - 操作数2 - CF
问题:
编程, 计算 003E1000H + 00202000H
11.8 cmp指令
CMP是比较指令,cmp的功能相当于减法 指令,只是不保存结果,只是利用结果 影响标志位。
指令格式 cmp 操作数1, 操作数2
11.9 条件转移指令
❖条件转移指令又分三大类:基于无符号数 的条件转移指令、基于有符号数的条件转 移指令和基于特殊算术标志位的条件转移 指令。
指令的助记符
测试条件
JZ / JE
ZF = 1
JNZ / JNE
ZF = 0
JS
SF = 1
JNS
SF = 0
JO
OF = 1
JNO
OF = 0
JP / JPE
PF = 1
JNP / JPO
PF = 0
JC / JNAE / JB CF = 1
JNC / JAE / JNB CF = 0
功能描述 结果为零(相等)则转移 结果不为零(不相等)则转移 结果为负则转移 结果不为负则转移 结果溢出则转移 不溢出则转移 奇偶位为1则转移 奇偶位为0则转移 进位位为1则转移 进位位为0则转移
功能描述
小于则转移
JNL / JGE SF OF = 0
不小于(大于或等于)则转移
JLE
(SF OF) V ZF = 1 小于或等于则转移
JNLE / JG (SF OF) V ZF = 0 不小于或等于(大于)则转移
SF OF 真值表
序号 SF
OF
a
0
0
b
0
1
c
1
0
d
1
1
SF OF 0 1 1 0
相关文档
最新文档