标志寄存器的值在Debug中是用英文字母表示的,它们的含义是什么?

如题所述

第1个回答  2009-03-26

在8086CPU中有种特殊的寄存器,它们用来存储CPU的状态,或某些指令执行的结果,用来控制CPU的工作方式。这些就是标志寄存器。 

标志寄存器共16位 其中 第1、3、5、12、13、14、15位无任何意义 

标志寄存器详解: 

CF:(第0位)无符号数进位标志。用于当二个数相加且相加后产生进位后的数据大于寄存器所能存储的数据的最大值时,CF=1 ;如 mov al,0F0H add al,10H 即发生了进位,al是8位寄存器,最大值为FFH,而相加后的数据100H 大于了它所能存储的最大值即发生的进位,而al中又不能存储这个进们的数据,则CF=1代表发生的进后,而AL中存储0 在debug中的CF的表现形式为: 当CF=1时 显示CF 当CF=0时 显示NC; 

PF:(第2位)奇偶校验位,是否为偶数,验证运算后结果的1 的个数,如 mov ax,5 add ax,2 执行后其结果 7的二进制位数 1 1 1 ,一的个数为奇数,即PF的值为0。 PF在debug中的表示为 为1 时PE,为 0时PO 

AF:(第4位)辅助进位标志符。在字操作时,当发生低字节向高字节进位或借位时或在字节操作时,低四位向高四位进位或借位时 AF的值为1 其他情况AF=0 

ZF:(第6位)0标志位,代表是否为0。当两个数据进行运算后,如果运算结果为0,则ZF=1,否则ZF=0;当ZF=1时 在debug中 显示 ZR 当ZF=0时,显示 NZ 

SF:(符7位)符号位,代表是否为负数。如果两数运算结果为负,则SF=1 , 当在debug中 SF=1时表现形式是 NG 为0时表现形式为 PL 

TF:(第8位)状态控制标志位,是用来控制CPU操作的,它们要通过专门的指令才能使之发生改变 

IF:(第9位)中断允许标志位,决定CPU是否响应CPU外部的可屏蔽中断发出的中断请求。在不管IF为何值,CPU必须响应CPU外部发出不可屏蔽中断请求和CPU内部的请求。为IF=1 CPU可以响应外部发出的可屏蔽中断请求。为0时不响应 STI 设置IF=1 CLI 设置IF=0 

DF:(第10位)串传送方向标志位。将DS:SI中的数据送入ES:DI中,如果DF为 0 ;SI,DI递增传送,DF=1时;SI,DI递减传送,传送长度为CX;在debug中 DF=0时显示为 DN 当DF=1时显示为 UP 

OF:(第11位)有符号数溢出标志位。标志当两个有符号数运算时,是否发生了溢出。如AL 为8位寄存器,则它的存储范围在-128~127之间 即80H-7FH 之间 例:mov al,041H add al,al 其结果为82 超出了表示范围,则OF=1 在debug中 OF=1时显示 为OV 当OF=0时显示为 NV 

各标志寄存器位置: