说明8086 8088 cpu标志寄存器中各位的意义 为什么

如题所述

从功能上划分,CPU内部可划分为总线接口单元BIU(Bus Interface Unit)与执行单元EU(Execution Unit):

总线接口单元BIU
BIU负责CPU与存储器、外设之间的数据传送,包括存储器读写,I/O接口读写以及取指令。

BIU由段寄存器(CS、DS、SS、ES)、指令指针寄存器(IP)、地址加法器、内部寄存器、指令队列缓冲器及I/O控制逻辑等部分组成。

2. 指令执行单元部件EU

EU负责指令执行,它由通用寄存器组、专用寄存器组、算术逻辑运算单元(ALU)、标志寄存器(FR)和内部控制逻辑组成。

从上可看出,BIU负责完成取指令与存取操作数,即CPU所有与外部总线有关的操作均由其完成。而EU则负责分析、执行指令,并不需与CPU外部总线直接发生联系,其所需的数据和所产生的结果都通过BIU接收或传送到外部总线。BIU与EU两个单元一起并行工作,使得取指令与执行指令的操作并行进行,从而大大提高了工作效率。

图中的8086中共有4个16位的通用寄存器(AX、BX、CX、DX),4个16位的指针与变址寄存器(BP、SP、SI、DI),4个16位的段寄存器(CS、DS、SS、ES),一个指令指针寄存器(IP)及一个标志寄存器(PSW)。

通 用
寄存器
15 - 8 7 - 0
累 加 器(AX) AH AL
基址寄存器(BX) BH BL
计 数 器(CX) CH CL
数据寄存器(DX) DH DL
指 针
和变址
寄存器
15 - 0
堆栈指示器(SP) SP
基址指示器(BP) BP
源 变址 器(SI) SI
目的变址器(DI) DI
控 制
寄存器 15 - 0
指令指示器(IP) IP
标志寄存器(FR) FR
段寄存器 15 - 0
代码段寄存器(CS) CS
数据段寄存器(DS) DS
堆栈段寄存器(SS) SS
附加段寄存器(ES) ES

注:

其中4个通用寄存器都可以拆成高8位与低8位两个寄存器来使用。
4个变址指针寄存器(SP、BP、SI、DI)中前两个称为“地址指针”,后两个称为“变址寄存器”。
通用寄存器的特殊用途和隐含性质
寄存器名 特殊用途 隐含性质
AX, AL 在输入输出指令中作数据寄存器用 不能隐含
在乘法指令中存放被乘数或乘积;
在除法指令中存放被除数或商 隐含
AH 在LAHF指令中,作目标寄存器用 隐含
AL 在十进制运算指令中作累加器用 隐含
在XLAT指令中作累加器用 隐含
BX 在间接寻址中作基址寄存器用 不能隐含
在XLAT指令中作基址寄存器用 隐含
CX 在串操作指令和LOOP指令中作计数器用 隐含
CL 在移位/循环移位指令中作移位次数计数器用 不能隐含
DX 在字乘法/除法指令中存放
乘积高位或被除数高位或余数 隐含
在间接寻址的输入输出指令中作地址寄存器用 不能隐含
SI 在字符串运算指令中作源变址寄存器用 隐含
在间接寻址中作变址寄存器用 不能隐含
DI 在字符串运算指令中作目标变址寄存器用 隐含
在间接寻址中作变址寄存器用 不能隐含
BP 在间接寻址中作基址指针用 不能隐含
SP 在堆栈操作中作堆栈指针用 隐含

注:EU中设计了一个16位的标志寄存器,用来存放程序状态字PSW(Program Status Word)。PSW中一共定义了9个有效位。

PSW的标志位
OF DF IF TF SF ZF AF PF CF

注:最左边的代表PSW的最高位,最右边(CF)的代表最低位。

PSW中标志位的用法及含义
标志位 用法及含义
DF 方向控制(Direction Flag)位
若设置DF=1,则串操作后,源和目的操作数的地址均向增址方向调整;若设置DF=0,则向减址方向调整。
IF 中断允许控制(Interrupt Enable Flag)位
若设置IF=1,则允许CPU响应可屏蔽中断(开中断);若IF=0,则不允许CPU响应可屏蔽中断(关中断)。
TF 陷井控制(Trap Flag)位
若设置TF=1,则将在CPU运行中设置陷井,此时,CPU每执行一条指令就产生一个单步中断,用户可以在中断服务中对当前指令的执行情况进行调试;若TF=0,表示不设置陷井。该标志主要用于程序的单步调试。
OF 溢出标志(Overflow Flag)位。它反映有符号数的运算结果是否超出其所能表示的范围;字运算的范围为-32768~+32767,字节运算的范围为-128~+127。若OF=1,则表示结果溢出;OF=0,表示结果未溢出。注意,OF标志主要针对有符号运算。
SF 符号标志(Sign Flag)位。它反映运算结果的最高有效位(MSB)为0、还是为1;对有符号运算来说,它反映了运算结果为正、还是为负。若SF=1,反映运算结果的最高有效位为1(或结果为负);若SF=0,则表示最高有效位为0(或结果不为负)。
ZF 零标志(Zero Flag)位。反映运算结果是否为全0。若ZF=1,则表示运算结果为全0(各位均为0);若ZF=0,表示运算结果非全0(各位不全为0)。
AF 辅助标志(Auxiliary Flag)位。该标志主要用于BCD码运算后的调整。它反映运算中低四位向前(即D3向D4)有无进位(针对加运算)或借位(针对减运算)。若AF=1,表示有进位或借位;若AF=0,表示无进位或借位。
PF 校验标志(Parity Flag)位。反映运算结果中1的个数是否为偶数。若PF=1,表示运算结果中有偶数个1;若PF=0,表示结果中有奇数个1。
CF 进位标志(Carry Flag)位。它反映运算中最高有效位(字运算时为D15、字节运算时为D7位)向前有无进位(针对加运算)或借位(针对减运算)。若CF=1,表示有进位或借位;若CF=0,表示无进位或借位。CF标志主要针对无符号运算。

注:DF、 IF、 TF为控制标志位,用户可以通过指令设置它们为0或1。从而控制CPU的状态。OF、SF、 ZF、 AF、 PF、CF 为状态标志位,它们记录程序的运行状态,通过对它们的判断决定程序
温馨提示:内容为网友见解,仅供参考
无其他回答

说明8086 8088 cpu标志寄存器中各位的意义 为什么
AF 辅助标志(Auxiliary Flag)位。该标志主要用于BCD码运算后的调整。它反映运算中低四位向前(即D3向D4)有无进位(针对加运算)或借位(针对减运算)。若AF=1,表示有进位或借位;若AF=0,表示无进位或借位。PF 校验标志(Parity Flag)位。反映运算结果中1的个数是否为偶数。若PF=1,表示...

8086 CPU标志寄存器各位的含义与作用是什么?
TF(Trap Flag)——跟踪标志位。它是为调试程序而设定的陷阱控制位。当该位置“1”时,8086 CPU处于单步状态,此时CPU每执行完一条指令就自动产生一次内部中断。当该位复位后,CPU恢复正常工作。

8086 CPU标志寄存器各位的含义与作用是什么?
- OF(溢出标志位):在补码运算中有溢出时OF为1,否则为0。2. 3个控制标志位用于控制CPU的操作,由指令置位或复位。- DF(方向标志位):控制字符串处理方向。DF为1时递减顺序处理,地址从高到低;DF为0时递增顺序处理。- IF(中断允许标志位):控制8086是否响应外部中断请求。IF为1时允许响应...

简述标志寄存器9位地址的含义,注意要含义
你说的是8086\/8088CPU内部的标志寄存器中9个标志位的含义吧。这9个标志位中6个是状态标志,3个是控制标志。6个状态标识分别是ZAPSOC,3个控制标志分别是IDT。6个状态标志(以下表述只给出了某位置1的情况,反之,则该位清0):Z:ZERO,0的意思,计算结果为零时,该位置1;A:AUXILARY,辅助的意...

简述8088\/8086标志寄存器中标志的作用,通过示例说明如何设置标志位的值...
IF为1时,CPU响应外部可屏蔽中断;为0时,不响应。不可屏蔽中断和内部中断总是会被响应。9. 方向标志DF(Direction Flag)方向标志DF用于串操作指令时,决定指针寄存器调整的方向。具体应用在字符串操作指令中说明。以上是对8088\/8086标志寄存器中标志作用的简述,以及如何通过示例设置标志位的值。

简述8088\/8086标志寄存器中标志的作用,通过示例说明如何设置标志位的值...
运算结果标志位 1、进位标志CF(Carry Flag)进位标志CF主要用来反映运算是否产生进位或借位。如果运算结果的最高位产生了一个进位或借位,那么,其值为1,否则其值为0。使用该标志位的情况有:多字(字节)数的加减运算,无符号数的大小比较运算,移位操作,字(字节)之间移位,专门改变CF值的指令等。2、...

在8086\/8088 CPU中,标志寄存器包含哪些标志位?各位为0(为1)分别表示什...
(1)方向标志DF(2)中断允许标志IF(3)追踪标志TF 。 答: 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 这些标志...

8086\/8088 CPU中有哪些工作寄存器?各有什么用途?
CF: 进位标志CF主要用来反映运算是否产生进位或借位。如果运算结果的最高位产生了一个进 位或借位,那么,其值为1,否则其值为0。)段寄存器 为了运用所有的内存空间,8086设定了四个段寄存器,专门用来保存段地址:CS(Code Segment):代码段寄存器;DS(Data Segment):数据段寄存器;SS(Stack ...

8086\/8088系统中,存储器为什么要分段,一个段的最大和最小各为多少字节...
8086\/8088系统中,存储器分段的主要目的是便于存储器的管理,使得可以用16位寄存器来寻址20位的内存空间。一个段最大为64KB,最小为16B。存储器一般用来保存程序的中间结果,为随后的指令快速提供操作数,从而避免把中间结果存入内存,再读取内存的操作。由于存储器的个数和容量都有限,不可能把所有中间结果...

8086\/8088微处理器内部有哪些寄存器?它们的主要作用是什么?
段寄存器的主要用途说明:8086\/8088在执行取指令操作或跳转执行或寻找存储器操作数的地址时,采用了分段寻址方式,在同一时刻可将内存分为4个逻辑段,段首地址即由段寄存器的内容给定。段寄存器内容为16位二进制数,称为段地址,一条指令或操作数据的物理地址是由段地址和偏移地址共同确定。采用段地址的...

相似回答