博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
那些年,我们一起学过的汇编----之标志寄存器
阅读量:5812 次
发布时间:2019-06-18

本文共 1129 字,大约阅读时间需要 3 分钟。

  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)递增,反之同样
     本文转自 驿落黄昏 51CTO博客,原文链接:http://blog.51cto.com/yiluohuanghun/938213,如需转载请自行联系原作者
你可能感兴趣的文章
startx命令--Linux命令应用大词典729个命令解读
查看>>
华为3026c交换机配置tftp备份命令
查看>>
Oracle命令导入dmp文件
查看>>
OCP读书笔记(24) - 题库(ExamD)
查看>>
Http、TCP/IP协议与Socket之间的区别(转载)
查看>>
解决Unable to load R3 module ...VBoxDD.dll (VBoxDD):GetLastError=1790
查看>>
.net excel利用NPOI导入oracle
查看>>
vrpie在Visio Studio 中无法调试的问题
查看>>
第六课:数据库的基本工具
查看>>
关于二叉树重构的思索
查看>>
$_SERVER['SCRIPT_FLENAME']与__FILE__
查看>>
skynet实践(8)-接入websocket
查看>>
系统版本判断
查看>>
My97DatePicker 日历插件
查看>>
0603 学术诚信与职业道德
查看>>
小点心家族第3位成员——楼层定位效果
查看>>
Knockout.Js官网学习(enable绑定、disable绑定)
查看>>
hive基本操作与应用
查看>>
excel快捷键设置
查看>>
poj3692
查看>>