kaiyun官方注册
您所在的位置: 首页> 嵌入式技术> 解决方案> 汇编基础:标志寄存器

汇编基础:标志寄存器

2017-06-10
关键词: 汇编

Intel 8086/8088CPU设置了一个16位的标志寄存器,用来反映微处理器的当前状态和某些控制,标志寄存器中有9个标志位,分为两大类:状态标志(CF, PF, AF, ZF, SF, OF)和控制标志(TF, IF, DF),状态标志由CPU根据运算结果自动设置,用来反映CPU的执行单元EU执行算术运算或逻辑运算后的结果特征,这些特征常用来影响或者是控制某些后续指令的执行,控制标志由系统程序或者用户程序用指令来设置或者是清除,用来控制CPU的某些操作。

1)、状态标志

(1)进位位CF

进位位CF用来反映运算结果是否产生进位或者是借位。如果运算结果的最高

位(字操作的15位和字节操作的第7位)产生一个进位(减法),则CF置1,否则CF清零,另外CF在循环移位/移位类指令中用来保存从最高位或最低位移出的0或1

(2)奇偶位PF

奇偶位PF用来反映运算结果低八位中“1”的个数,可以为传送数据时可能产生的出错情况提供校验条件,如果运算结果中的低八位中“1”的个数为偶数个时,则置PF为1,否则置0

(3)辅助进位位AF

辅助进位位AF用来反映运算结果低四位产生进位或借位情况,如果运算结果的第3位产生了一个进位或借位,,则AF置1,否则置0,AF只反映运算结果的低八位,与操作数长度无关,主要用于十进制的调整

(4)零值位ZF

零值位ZF用来反映运算结果是否为0, 如果运算结果为0,则ZF置为1, 否则置为0

(5)符号位SF

符号位SF再将运算结果视为带符号数时,用来反映运算结果是正数还是负数,如果运算结果是负数,即一个数的最高位为1则SF置1,否则置0,所以SF与运算结果的最高位相一致

(6)溢出位OF

溢出位OF用来反映运算结果是否超出了补码的表示范围,8位带符号数的补码的表示范围是-128--+127, 16位的带符号数补码表示范围是-32768--+32767,如果运算结果超过了补码的范围,则OF置1,否则置0.

2)控制标志

(1)单步标志位TF

单步标志位TF也叫跟踪标志位,用药用于程序程序的跟踪调试,当TF=1时,CPU进入单步状态。

(2)中断允许位IF

中断允许位IF用于决定CPU是否可以相应外部可屏蔽中断请求,当IF=1时为中断状态,即允许CPU响应外部可屏蔽中断,反则一样

(3)方向位DF

方向位DF决定串操作指令执行时指针寄存器的调整方向方向,当DF=0时,正向处理,从地地址向高地址,即串操作指令自动地使地址寄存器(SI或DI)递增,反之同样


本站内容除特别声明的原创文章之外,转载内容只为传递更多信息,并不代表本网站赞同其观点。转载的所有的文章、图片、音/视频文件等资料的版权归版权所有权人所有。本站采用的非本站原创文章及图片等内容无法一一联系确认版权者。如涉及作品内容、版权和其它问题,请及时通过电子邮件或电话通知我们,以便迅速采取适当措施,避免给双方造成不必要的经济损失。联系电话:010-82306116;邮箱:aet@chinaaet.com。
Baidu
map