标志寄存器 F( Carry Flag):进位/借位标志 CF=1:最高位需要向前产生进位/借位。 CF=0:最高位不会向前产生进位/借位。 nAF( Auxiliary Carry Flag):辅助进位标志 AF=1:数据的第3位(半个字节)需要向前产生进 位/借位。 AF=0:数据的第3位(半个字节)不会向前产生进 位/借位 Dis D1 D13 D2 Du D10 Dg DD, D6 D: D4 D3 D, D Do OFDFIFTFSFZF AF PF CF 21
21 标志寄存器 ◼ CF(Carry Flag):进位/借位标志 ◼ CF=1:最高位需要向前产生进位/借位。 ◼ CF=0:最高位不会向前产生进位/借位。 ◼ AF(Auxiliary Carry Flag):辅助进位标志 ◼ AF=1:数据的第3位(半个字节)需要向前产生进 位/借位。 ◼ AF=0:数据的第3位(半个字节)不会向前产生进 位/借位
标志寄存器 ( Sign Flag):符号标志 sF=1:运算结果的最高位为1,如果为带符号数,则 为负数。 SF=0:运算结果的最高位为0,如果为带符号数,则 为正数。 n带符号数的最高位为符号位;而无符号数的最高位为 数值位 nzF( Zero Flag):全零标志 ZF=1:运算结果为全0。不包括进位的情况 ZF=0:运算结果不为0。 Dis D14 D13 D12 Du D10 Dg D8 D, D6 D: D4 D3 D, Di Do OF DF IF TF SF ZF AF PF CF
22 标志寄存器 ◼ SF(Sign Flag):符号标志 ◼ SF=1:运算结果的最高位为1,如果为带符号数,则 为负数。 ◼ SF=0:运算结果的最高位为0,如果为带符号数,则 为正数。 ◼ 带符号数的最高位为符号位;而无符号数的 最高位为 数值位。 ◼ ZF(Zero Flag):全零标志 ◼ ZF=1:运算结果为全0。不包括进位的情况 ◼ ZF=0:运算结果不为0
标志寄存器一控制标志 控制标志位的值不由数据运算的结果决定,而由专用指 令直接赋值 控制标志决定了后续指令的执行情况 DF( Direction Flag):方向控制标志位 用于串处理指令,控制从前往后、还是从后往前对字 符串进行操作处理 ■DF=1,每次串处理操作后使变址寄存器S和D工的值 递减,使串处理从高地址向低地址方向处理。 DF=0,每次串处理操作后使变址寄存器SI和DI的值 递增,使串处理从低地址向高地址方向处理。 Dis D14 D13 D12 Du D10 Dg Ds D, D6 Ds D4 D3 D, Di Do OF DF IF TF SF ZF AF PF CF 23
23 标志寄存器 —控制标志 ◼ 控制标志位的值不由数据运算的结果决定,而由专用指 令直接赋值 ◼ 控制标志决定了后续指令的执行情况 ◼ DF(Direction Flag):方向控制标志位 ◼ 用于串处理指令,控制从前往后、还是从后往前对字 符串进行操作处理 ◼ DF=1,每次串处理操作后使变址寄存器SI和DI的值 递减,使串处理从高地址向低地址方向处理。 ◼ DF=0,每次串处理操作后使变址寄存器SI和DI的值 递增,使串处理从低地址向高地址方向处理
标志寄存器一控制标志 nr( interupt Flag):中断允许/禁止标志位。 STI\CLI IF=1,允许外部可屏蔽中断。CPU可以响应可屏蔽中断请 求。 IF=0,关闭中断。CPU禁止响应可屏蔽中断请求。 IF的状态对不可屏蔽中断和内部软中断没有影响。 ■TF( Trap Flag):跟踪(陷阱)标志位。系统调试用。 TF=1,每执行一条指令后,自动产生一次内部中断,使 cPU处于单步执行指令工作方式,便于进行程序调试,用 户能检查程序。 TF=0,cPU正常工作,不产生陷阱。 Dis D14 D13 D12 Du D10 Dg Ds D, D6 Ds D4 D3 D, D Do OF DF IF TF SF ZF AF PF 244
24 标志寄存器 —控制标志 ◼ IF(Interupt Flag):中断允许/禁止标志位。STI\CLI ◼ IF=1, 允许外部可屏蔽中断。CPU可以响应可屏蔽中断请 求。 ◼ IF=0, 关闭中断。CPU禁止响应可屏蔽中断请求。 ◼ IF的状态对不可屏蔽中断和内部软中断没有影响。 ◼ TF(Trap Flag):跟踪(陷阱)标志位。系统调试用。 ◼ TF=1,每执行一条指令后,自动产生一次内部中断,使 CPU处于单步执行指令工作方式,便于进行程序调试,用 户能检查程序。 ◼ TF=0, CPU正常工作,不产生陷阱
例:2个数相加后,分析各标志位的值 o||1o|o11o1oo1:0 +[Do11oo100001100 o01010101100110 运算结果最高位为1 SF=1; 运算结果本身≠0 ∴ZF=0; 结果中1的个数为偶数个 PF=1; 最高位没有进位 CF=0; 第三位向第四位有进位 ∴AF=1; 次高位向最高位有进位,最高位向前没有进位,∴OF=10=1 注意:带符号数的运算结果是否正确看OF,无符号数看CF 25
25 例:2个数相加后,分析各标志位的值 0 1 1 0 0 0 1 1 0 1 0 0 1 1 0 1 0 0 1 1 0 0 1 0 0 0 0 1 1 0 0 1 + 1 0 0 1 0 1 0 1 0 1 1 0 0 1 1 0 运算结果最高位为1 ∴SF=1; 第三位向第四位有进位 ∴AF=1; 次高位向最高位有进位 ,最高位向前没有进位,∴OF=10=1 最高位没有进位 ∴CF=0; 结果中1的个数为偶数个 ∴PF=1; 运算结果本身≠0 ∴ZF=0; 注意:带符号数的运算结果是否正确看OF,无符号数看CF