标志寄存器及其标志位

标志寄存器及其标志位标志寄存器 CPU 内部的寄存器 对于不同的处理机 个数和结构都可能不同 具有三种作用 用来存储相关指令的某些执行结果 用来为 CPU 执行相关指令提供行为依据 用来控制 CPU 的相关工作方式 8086CPU 的标志寄存器有 16 位 其中存储的信息通常被称为程序状态字 PSW 标志位 简称 flag flag 和其他寄存器不一样 其他寄存器是用来存放数据的 都是

标志寄存器:
CPU内部的寄存器,(对于不同的处理机,个数和结构都可能不同)具有三种作用:
  • 用来存储相关指令的某些执行结果
  • 用来为CPU执行相关指令提供行为依据
  • 用来控制CPU的相关工作方式


8086CPU的标志寄存器有
16位,其中
存储的信息通常被称为
程序状态字PSW(标志位),简称flag。flag和其他寄存器不一样,其他寄存器是用来存放数据的,都是整个寄存器具有一个含义。
标志寄存器及其标志位

标志位


flag的1,3,5,12,13,14,15位在8086CPU中没有使用,不具有任何含义,而其余位具有特殊的含义。


运算结果标志位:
ZF标志(ZeroFlag):
零位标志位,它记录相关指令执行后的结果是否为0,如果是0,那么ZF=1,如果结果不为0,那么ZF=0。


PF标志(ParityFlag):
奇偶标志位,它记录相关指令执行后,其结果的所有二进制位中1个个数是否为偶数,如果是偶数,PF=1,反之为0。


SF标志(SignFlag):
符号标志位,它记录相关指令执行后,其结果是否为负,如果结果为负,SF=1,如果非负,SF=0。


CF标志(Carry进位,Flag标志):
进位标志位,一般情况,进行无符号运算时,它记录运算结果的最高位向更高位的进位值,或从更高位的借位值,如果运算结果的最高位产生了一个进位或借位,那么其值为1,否则其值为0。


OF标志(Overflow溢出,Flag标志):
溢出标志位,在进行有符号数运算的时候,如果结果超出了机器所能表示的范围称为溢出,OF的值被置为1,否则OF的值为0。
注意:这里所说的溢出,只是对有符号运算而言。


状态控制标志位:
TF标志(TrapFlag):
追踪标志位,当追踪标志被置为1时,CPU进入单步执行方式,即每执行一条指令产生一个单步中断请求,这中方式主要用于程序的调试。


IF标志(Interrupt-enable Flag):
中断允许标志位
用来决定CPU是否响应CPU外部的可屏蔽中断发出的中断请求,但不管该标志为何值,CPU都必须响应CPU外部的不可屏蔽中断所发出的中断请求,以及CPU内部产生的中断请求。
  • 当IF=1时,CPU可以相应CPU外部的可屏蔽中断发出的中断请求。
  • 当IF=0时,CPU不响应CPU外部的可屏蔽中断发出的中断请求。
CPU的指令系统中也有专门的指令来改变标志位IF的值。



参考资料:
http://netclass.csu.edu.cn/NCourse/hep094/homepage/flags2.htm(各种标志位的含义)
http://www.cppblog.com/luqingfei/archive/2010/08/04/.aspx(标志寄存器)
版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请联系我们举报,一经查实,本站将立刻删除。

发布者:全栈程序员-站长,转载请注明出处:https://javaforall.net/228377.html原文链接:https://javaforall.net

(0)
上一篇 2026年3月16日 下午7:10
下一篇 2026年3月16日 下午7:10


相关推荐

  • python利用flask_mail、sendgrid发送邮件[通俗易懂]

    python利用flask_mail、sendgrid发送邮件[通俗易懂]在学习Flask,看的书籍是《FlaskWeb开发实战入门、进阶与原理解析》。在学习发送电子邮件这一章节时,遇到一些问题,便写下这一篇文章,记录一下,也希望遇到同样问题的人能够花较少时间在解决问题上。本文包括Flask_Mail发送电子邮件和SendGrid发送电子邮件两部分。Gmail、Outlook、QQ邮箱等这类服务被称为EPA(EmailServiceProvider),只适…

    2025年7月10日
    9
  • div:给div加滚动栏 div的滚动栏设置

    div:给div加滚动栏 div的滚动栏设置

    2021年12月4日
    55
  • C语言中的sizeof()和strlen()的区别[通俗易懂]

    C语言中的sizeof()和strlen()的区别sizeof()和strlen()经常会被初学者混淆,但其中有有很大区别:1.sizeof()【操作数所占空间的字节数大小】是一种c中的基本运算符。可以以类型、指针、数组和函数等作为参数。头文件类型为unsignedint。运算值在编译的时候就出结果,所以可以用来定义数组维数。chara[5]=”123″;intb=sizeof(a);//b=5intc=strlen(a);//c=3sizeof()是一种单目操作符,是用来计算你

    2022年4月8日
    36
  • 主成分分析简单例子

    主成分分析简单例子一 数据降维 nbsp nbsp 对于现在维数比较多的数据 我们首先需要做的就是对其进行降维操作 降维 简单来说就是说在尽量保证数据本质的前提下将数据中的维数降低 降维的操作可以理解为一种映射关系 例如函数 即由原来的二维转换成了一维 处理降维的技术有很多种 如前面的 SVD 奇异值分解 主成分分析 PCA 因子分析 FA 独立成分分析 ICA 等等 二 PCA 的概念 nbsp nbsp PCA 是一种较为常用的降

    2026年3月17日
    2
  • Jenkins(8)构建触发器之定时构建和轮询 SCM「建议收藏」

    Jenkins(8)构建触发器之定时构建和轮询 SCM「建议收藏」前言跑自动化用例每次用手工点击jenkins出发自动化用例太麻烦了,我们希望能每天固定时间跑,这样就不用管了,坐等收测试报告结果就行。jenkins的定时任务是用的crontab语法定时构建语法

    2022年7月31日
    9
  • 为HttpStatusCodeResult添加customErrors

    为HttpStatusCodeResult添加customErrorsasp.netmvc的action返回值为HttpStatusCodeResult时的customErrors总是不起作用的解决办法

    2022年7月16日
    16

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

关注全栈程序员社区公众号