首页 > 范文大全 > 正文

试分析FLAGS中各状态标志位的状态

开篇:润墨网以专业的文秘视角,为您筛选了一篇试分析FLAGS中各状态标志位的状态范文,如需获取更多写作素材,在线客服老师一对一协助。欢迎您的阅读与分享!

摘要:本文介绍标志寄存器6个状态标志位,结合作者教学经验总结,讨论了各标志位状态的分析方法,为读者解决此类问题提出一些建议。

关键词:状态标志位;flags;溢出标志位

中图分类号:TP332文献标识码:A文章编号:1009-3044(2008)09-11753-02

The State of the State Flag in FLAGS

ZHANG Xing-hua

(Langfang Teachers College, Langfang 065000, China)

Abstract: This Article introduces six state flag of the signs register, Discusses the analysis method in status of the flag, make some suggestions For readers to solve such problems, with teaching experience of the author.

Key words: State flag; FLAGS; Overflow flag

1 什么是FLAGS

FLAGS即标志寄存器,它是CPU中执行部件EU中的一个组成部件,FLAGS共有16位,其中7位未用,用到的9位包括6个状态标志位和3个控制标志位。其中6个标志反映CPU指令运行后的运行状态信息,分别为CF、AF、PF、SF、OF和ZF。此标志位用二根据指令执行后的操作结果进行判断转移。3个控制标志分别为PF、IF和TF。控制标志可由编程人员通过指令设置,有专门的指令对控制标志置或置1。

2 状态标志位各位的含义

CF:进位标志位,进行二个无符号数加法或减法运算后,若最高位(第7位或第15位)发生进位或借位,则CF=1,否则CF=0。

PF:奇偶标志位,当逻辑运算的结果低8位中“1”的个数为偶数时PF=1,为奇数时PF=0

AF:辅助进位位,在8(16)位加减法操作中,低4位向高4位有进位或借位时,AF=1,否则AF=0,这个标志位只在BCD数运算中起作用。

ZF:零标志位,当运算结果为零(各位全为0)时ZF=1,否则ZF=0

SF:符号标志位,当运算结果的最高位(第7位或第15位)为1时,SF=1,否则SF=0

OF:溢出标志位,当运算结果走超出了带符号数的范围,即溢出时,OF=1,否则OF=0.8位补码的整数范围是-128~+127,16位补码的整数范围是-32768~+32767。

注意:

(1)进行有符号数运算时,CF对运算结果没有直接意义;

(2)六个状态标志位记录了算术运算和逻辑运算结果的一些特征,如:结果是否为“0”,是否有进位或错位,结果溢出等,不同的指令对状态标志位的影响是不同的。

3 分析各标志位的状态

掌握运算结果对状态标志位的影响,对于在编程中控制程序的执行方向具有重要意义。根据运算结果设置标志位的例子如下。

方法一:若AL=3BH,AH=7DH,指出AL和AH中的内容相加、相减后,标志CF,AF,PF,SF,OF和ZF的状态。

3.1 (AL)+(AH)

分析:由运算结果可知,CF = C7(D7位上的进位)= 0(无进位)

AF = C3(D3位上的进位)= 1(有辅助进位)

PF = 1(运算结果有4个1)

SF = D7 = 1(运算结果符号位为1)

OF = C7C6 = 01 = 1(有溢出)

ZF = 0(运算结果不为0)

3.2 (AL)-(AH)

分析:由运算结果可知:CF = C7(D7位上的借位)=1(有借位)

AF = C3(D3位上的借位)= 1(有辅助借位)

PF = 1(运算结果中有6个1)

SF = D7= 1(符号位为1)

OF= C7C6 = 11 = 0(无溢出);ZF = 0(运算结果不为0)。

方法二:完成二进制数10000101与11101110加法,分析各标志位的状态。

分析:由运算结果可知,CF=1,AF=1,OF=1,PF=0,ZF=0,SF=0。可以看出如作为符号数运算,则相当于完成十进制数133+238=371>255(8位无符号二进制数能表示的最大数为255),运算结果有进位CF=1。当看做有符号数运算,则相当于完成十进制数(-123)+(-17)=-140,超出了8位有符号二进制数能表示的范围127~-128,运算结果有溢出,OF=1。

4 总结

由此可知,当遇到分析标志位状态时,有较简单的方法,如方法一,以8位二进制数为例,PF、ZF和SF由运算结果就能直接看出,AF要看D3位上的进位或借位,CF要看D7位上的进位或借位,OF = C7C6。也有较常见的方法,如方法二。各位读者可根据客观条件使用不同的方法。

参考文献

[1] 潘峰.微型计算机原理与汇编语言[M].电子工业出版社,1997.4.

[2] 韩雁,徐煜明.微机原理与接口技术[M].电子工业出版社,2005.1.

[3] 曹岳辉等.计算机硬件技术基础[M].清华大学出版社,2006.1.

[4] 刘星.微机原理与接口技术[M].清华大学出版社,2002.1.

注:“本文中所涉及到的图表、注解、公式等内容请以PDF格式阅读原文。”