鱼C论坛

 找回密码
 立即注册

汇编基础:标志寄存器

已有 853 次阅读2013-6-24 20:48 |个人分类:汇编语言

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)递增,反之同样。


路过

鸡蛋

鲜花

握手

雷人

评论 (0 个评论)

facelist

您需要登录后才可以评论 登录 | 立即注册

小黑屋|手机版|Archiver|鱼C工作室 ( 粤ICP备18085999号-1 | 粤公网安备 44051102000585号)

GMT+8, 2024-3-29 17:01

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

返回顶部