首页 理论教育 专用寄存器

专用寄存器

时间:2023-02-28 理论教育 版权反馈
【摘要】:8086/8088把1M字节地址空间分成若干逻辑段,当前使用段的段值存放在段寄存器中。在1.7节介绍如何使用这4个段寄存器和访问这4个段。各标志在标志寄存器中的位置如图1-4所示。所以,程序员要充分注意指令与标志的关系。利用PF可进行奇偶校验检查,或产生奇偶校验位。方向标志DF决定着串操作指令执行时有关指针寄存器调整方向。这主要用于程序的调试。

1.6.2 专用寄存器

1.段寄存器

8086/8088CPU依赖其内部的4个段寄存器实现寻址1M字节物理地址空间。8086/8088把1M字节地址空间分成若干逻辑段,当前使用段的段值存放在段寄存器中。由段值和段内偏移形成20位地址,在1.7节介绍形成20位地址的具体方法。

8086/8088CPU的4个段寄存器均是16位的,分别称为代码段寄存器CS(CodeSeg ment),数据段寄存器DS(Data Seg ment),堆栈段寄存器SS(Stack Seg ment),附加段寄存器ES(Extra Seg ment)。由于8086/8088有这4个段寄存器,所以有4个当前使用段可直接存取,这4个当前段分别称为代码段、数据段、堆栈段和附加段。在1.7节介绍如何使用这4个段寄存器和访问这4个段。

2.指令指针寄存器

8086/8088CPU中的指令指针IP(Instruction Pointer)也是16位的,它类似于8080/8085中的程序计数器PC(Program Counter)。指令指针IP给出接着要执行的指令在代码段中的偏移地址。实际上接着要执行的指令已被预取到预取指令队列,除非发生转移。在理解IP的功能时,可不考虑指令预取队列。

3.标志寄存器

8086/8088CPU中有一个16位的标志寄存器,包含了9个标志,主要用于反映处理器的状态和运算结果的某些特征。各标志在标志寄存器中的位置如图1-4所示。

img17

图1-4 各标志在寄存器中的位置

有些指令的执行会影响部分标志,而有些指令的执行不会影响标志;反过来,有些指令的执行会受到某些标志的影响,有些指令的执行不受标志的影响。所以,程序员要充分注意指令与标志的关系。

9个标志可分成两组:第一组6个标志主要受加减运算和逻辑运算结果的影响,称为运算结果标志;第二组标志不受运算结果的影响,称为状态控制标志。

(1)运算结果标志。

进位标志CF(Carry Flag)。

进位标志CF主要用于反映运算是否产生进位或借位。如果运算结果的最高位(字操作时的第15位或字节操作时的第7位)产生—个进位或借位,则CF被置1,否则CF被清0。在进行多字节数的加减运算时,要使用到该标志;在比较无符号数的大小时,要使用到该标志。

移位指令也把操作数的最高位或最低位移入CF。移位指令和CF的配合,可实现操作数之间的位传送。CF也常作为子程序的出口参数之一。8086/8088提供专门的改变CF值的指令。

零标志ZF(Zero Flag)。

零标志ZF用于反映运算结果是否为0。如果运算结果为0,则ZF被置1,否则ZF被清0。在判断运算结果是否为0时,要使用到该标志。

符号标志SF(Sign Flag)。

符号标志SF用于反映运算结果的符号位。SF与运算结果的最高位相同,如果运算结果的最高位为l,则SF被置l,否则SF被清0。由于在8086/8088系统中,有符号数采用补码的形式表示,所以SF反映了运算结果的符号。如果运算结果为正,则SF被清0,否则SF被置1。

溢出标志OF(Overflow Flag)。

溢出标志OF用于反映有符号数加减运算是否引起溢出。如运算结果超出了8位或16位有符号数的表示范围,即在字节运算时大于127或小于-128,在字运算时大于32767或小于-32768,称为溢出。如果溢出,则OF被置1,否则OF被清0。

要特别注意,溢出标志与进位标志是两个不同性质的标志,不能混淆。

奇偶标志PF(Parity Flag)。

奇偶标志PF用于反映运算结果中“1”的个数。如果“1”的个数为偶数,则OF被置1,否则OF被清0。利用PF可进行奇偶校验检查,或产生奇偶校验位。在串行通信中,为了提高传送的可靠性,常采用奇偶校验。

辅助进位标志AF(Auxiliary Carry Flag)。

在字节操作时,若发生低半字节向高半字节进位或借位,在字操作时,若发生低字节向高字节进位或借位,则辅助进位标志AF被置1,否则AF被清0。十进制算术运算调整指令自动根据该标志产生相应的调整动作。

(2)状态控制标志。

状态控制标志控制处理器的操作,要通过专门的指令才能使状态控制标志发生变化。

方向标志DF(Direction Flag)。

方向标志DF决定着串操作指令执行时有关指针寄存器调整方向。当DF为1时,串操作指令按减方式改变有关的存储器指针值;当DF为0时,串操作指令按加方式改变有关的存储器指针值。8086/8088提供的专门用于设置方向标志DF的指令是STD,专门用于清除DF的指令是CLD。

中断允许标志IF(Interrupt Enable Flag)。

中断允许标志IF决定着CPU是否响应外部可屏蔽中断请求。当IF为1时,CPU能够响应外部的可屏蔽中断请求;当IF为0时,则不响应外部的可屏蔽中断请求。但此标志的状态对于外部的非屏蔽中断请求,或内部产生的中断不起作用。8086/8088提供的专门用于设置中断允许标志IF的指令是STI,专门用于清除IF的指令是CLI。

追踪标志TF(Trap Flag)。

当追踪标志TF被置1后,CPU进入单步方式。所谓单步方式是指在一条指令执行后,产生一个单步中断。这主要用于程序的调试。8086/8088没有专门设置和清除TF标志的指令,要通过其他方法设置或清除TF。

免责声明:以上内容源自网络,版权归原作者所有,如有侵犯您的原创版权请告知,我们将尽快删除相关内容。

我要反馈