8 标志寄存器

news2024/9/24 3:21:14

标志寄存器

CPU 内部的寄存器中,有一种特殊的寄存器(对于不同的处理机,个数和结构都可能不同)具有以下3 种作用。

  • 用来存储相关指令的某些执行结果;
  • 用来为CPU 执行相关指令提供行为依据:
  • 用来控制CPU 的相关工作方式。

flag 寄存器是按位起作用的,也就是说,它的每一位都有专门的含义,记录特定的信息。

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-O8NvTROb-1670664830858)(C:\Users\ALANSHAO\AppData\Roaming\Typora\typora-user-images\image-20221208124857416.png)]

1 flag寄存器标志

在Debug 中,标志寄存器是按照有意义的各个标志位单独表示的。在Debug 中,我们可以看到下面的信息。

在这里插入图片描述

1.1 ZF标志

flag 的第6 位是ZF,零标志位。它记录相关指令执行后,其结果是否为0 。如果结果为0,那么zf=1 ;如果结果不为0,那么zf=0。

1.2 PF标志

flag 的第2 位是PF , 奇偶标志、位。它记录相关指令执行后,其结果的所有bit 位中1的个数是否为偶数。如果1 的个数为偶数, pf=l ,如果为奇数,那么pf=0。

1.3 SF标志

flag 的第7 位是SF ,符号标志位。它记录相关指令执行后,其结果是否为负。如果结果为负, SF=l ;如果非负, SF=0 。

1.4 CF标志

flag 的第0 位是CF,进位标志位。一般情况下,在进行无符号数运算的时候,它记录了运算结果的最高有效位向更高位的进位值,或从更高位的借位值。

1.5 OF标志

对于无符号数运算, CPU 用CF 位来记录是否产生了进位;对于有符号数运算, CPU 用OF 位来记录是否产生了溢出,当然,还要用SF 位来记录结果的符号。

2 指令

2.1 adc指令

adc 是带进位加法指令,它利用了CF 位上记录的进位值。

指令格式: adc 操作对象1 ,操作对象2
功能: 操作对象1 =操作对象1 +操作对象2 + CF
比如指令adc ax,bx 实现的功能是:(ax)=(ax)+(bx)+ CF

2.2 sbb指令

sbb 是带借位减法指令,它利用了CF 位上记录的借位值。

指令格式: sbb 操作对象l ,操作对象2
功能:操作对象l =操作对象1-操作对象2-CF
比如指令sbb ax,bx 实现的功能是:(ax)=(ax)-(bx)-CF

2.3 cmp指令

cmp 是比较指令, cmp 的功能相当于减法指令,只是不保存结果。cmp 指令执行后,将对标志寄存器产生影响。其他相关指令通过识别这些被影响的标志寄存器位来得知比较结果。

cmp 指令格式: cmp 操作对象1 , 操作对象2
功能:计算操作对象1-操作对象2 但并不保存结果,仅仅根据计算结果对标志寄存器进行设直。

3 检测比较结果的条件转移指令

指令含义检测的相关标志位

je等于则转移zf=1
jne不等于则转移zf=0
jb低于则转移cf =1
jnb不低于则转移cf=0
ja高于则转移cf=0 且zf=0
jna不高于则转移cf=1 或zf=1

4 DF 标志和串传送指令

4.1 DF标志

flag 的第10 位是DF,方向标志位。在串处理指令中,控制每次操作后si 、di 的增减。

df=0 每次操作后si 、di 递增:
df=1 每次操作后si 、di 递减。

4.2 movsb指令

用汇编语法描述movsb 的功能如下。

moves : [di],byte ptr ds: [si)   ;8086 并不支持这样的指令,这里只是个描述
如果df=O:
lnc si
inc di
如果df=l:
dec si
dec di

5 pushf 和popf

pushf 的功能是将标志寄存器的值压栈,而popf 是从栈中弹出数据,送入标志寄存器中。
pushf 和 popf,为直接访问标志寄存器提供了一种方法。

5 pushf 和popf

pushf 的功能是将标志寄存器的值压栈,而popf 是从栈中弹出数据,送入标志寄存器中。
pushf 和 popf,为直接访问标志寄存器提供了一种方法。

在Debug 中,标志寄存器是按照有意义的各个标志位单独表示的。在Debug 中,我们可以看到下面的信息。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/79109.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

Pyinstaller打包exe程序

Pyinstaller和Nuitka是两大热门的python打包路径,学习Nuitka可以点击Nuitka入门学习。本文主要介绍Pyinstaller打包过程。 1.创建python虚拟环境 在conda中创建一个虚拟环境,用于程序打包,可以使打包程序占用空间最小 使用一下指令&#x…

一个超方便将现有博客生成vuepress2文档站的插件

闲来无事,研究了一下vuepress2和它的插件机制,写了一个可以一键通过已有博客生成vuepress2的文档站的vuepress2插件vuepress-plugin-blog-sync 效果 在vuepress2中简单引入即可达到将政采云掘金博客一键生成vuepress2页面,效果✨ 详见Demo …

38_SPI通信原理

SPI接口简介 SPI是英语Serial Peripheral interface的缩写,顾名思义就是串行外围设备接口。是Motorola首先在其MC68HCXX系列处理器上定义的。 SPI,是一种高递的,全双工,同步的通信总线,并且在芯片的管脚上只占用四根线,节约了芯片的管脚,同时为PCB的布局上节省空间,提供方便,…

蔚来智驾功能大更新:与其叫NOP+,不如叫NAD-

HiEV消息(文/张祥威)赶在2022年最后一个月,蔚来的自动驾驶大招露出了冰山一角。 2020年10月,蔚来国内首家推送高速场景下的领航辅助NOP(Navigate on Pilot),当时只有特斯拉实现了类似功能&#…

English Learning - L1 站在高处建立灵魂 2022.12.5 周一

English Learning - L1 站在高处建立灵魂 2022.12.5 周一1.1 到底什么是语法1.2 为什么要学习语法口语分广义和狭义讲母语的人为啥不学语法?作为一名二语习得者口语中可不可以没有有语法?1.3 英语(听说读写)的核心金字塔理论关于词…

[附源码]计算机毕业设计基于web的羽毛球管理系统Springboot程序

项目运行 环境配置: Jdk1.8 Tomcat7.0 Mysql HBuilderX(Webstorm也行) Eclispe(IntelliJ IDEA,Eclispe,MyEclispe,Sts都支持)。 项目技术: SSM mybatis Maven Vue 等等组成,B/S模式 M…

数据结构作业——第十四周——AOE网+查找

1. 单选题 简单 5分 若一个有向图中的顶点不能排成一个拓扑序列,则可断定该有向图______。 A.是个有根有向图 B.是个强连通图 C.含有多个入度为0的顶点 D.含有顶点数目大于1的强连通分量 回答正确 解析 2 . 单选题 简单 5分 以下关于图拓扑排序的叙述中正确的…

自动驾驶之去光晕调研

中文版综述github 一、光晕类型 常见去光晕算法的光晕 去光晕算法的光晕之二(汇总) 样式包括有: halos(色圈), streaks(条纹), bright lines(亮线), saturated blobs(深污点), color bleeding(色渗), haze(烟雾), and many others。 二、光晕成因 一个理想的相机&#x…

JSP SSH校园兼职信息发布平台myeclipse开发mysql数据库MVC模式java编程计算机网页设计

一、源码特点 JSP SSH校园兼职信息发布平台是一套完善的web设计系统(系统采用ssh框架进行设计开发),对理解JSP java编程开发语言有帮助,系统具有完整的源代码和数据库,系统主要采 用B/S模式开发。开发环境为TOMCA…

Docker Images Explore

Docker Images Explore scratch an explicitly empty image, especially for building images “FROM scratch” You can use Docker’s reserved, minimal image, scratch, as a starting point for building containers. Using the scratch “image” signals to the build …

自定义键盘快捷键调节电脑音量

外接的键盘没有Fn。。。也没有调音量的键😅于是想自己弄一个 方法一:修改注册表键盘映射 新建记事本文件打开,粘贴如下内容: Windows Registry Editor Version 5.00 [HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Key…

Idea 调试自定义 AbstractProcessor 程序

我们常使用的 Lombok 可以自动生成 gettr 和 setter 方法,使用起来非常方便;有时候我们也要去实现自己的注解处理器,实现一些在编译阶段需要执行的逻辑,例如我之前写的 spring cloud 自动生成 openfeign 的Fallback 降级方法;自动生成 openfeign 的Fallback 但是自定义注…

JavaEE进阶:SpringBoot概念、创建和运⾏

文章目录一、Spring Boot 优点二、Spring Boot 项⽬创建1、使用 Idea 创建① 准备工作② 创建项目③ 注意事项2、网页版创建(了解)三、项目目录介绍和运行1、运行项目2、输出 Hello world四、注意事项:包路径错误1、正确路径2、小结&#xff…

第十四届蓝桥杯集训——JavaC组第九篇——三元运算符

第十四届蓝桥杯集训——JavaC组第九篇——三元运算符 一元运算符(一元运算符有1个操作数) ,- -都是运算符,- -可分为前,后+和前-,后减如果在后面,如:num 10;先参与运算,然…

基于混合NSGA II-MOPSO算法的热电联合经济排放调度(Matlab代码实现)【混合多目标遗传算法-多目标粒子群算法】

💥💥💥💞💞💞欢迎来到本博客❤️❤️❤️💥💥💥 🚀支持:🎁🎁🎁如果觉得博主的文章还不错或者您用得到的话&…

游戏开发43课 移动游戏性能优化1

1. 前言 很多年前就想将这些年工作中积累的优化经验撰写成文章,但懒癌缠身,迟迟未动手,近期总算潜下心写成文章。 涉及到具体优化技巧时,博主会尽量阐述原理和依据,让读者知其然也知其所以然。要完全读懂这篇文章&am…

尚医通MyBatis-Plus入门、添加、主键策略(二)

目录: (1)MyBatis-Plus入门案例 (2)MyBatis-Plus-添加和主键生成策略 (1)MyBatis-Plus入门案例 简介: MyBatis-Plus(简称 MP)是一个 MyBatis 的增强工具&a…

c51单片机烧录程序 控制台显示正在检测目标单片机

问题 c51单片机烧录程序 控制台显示正在检测目标单片机 详细问题 笔者使用单片机型号STC89C52, 进行程序烧录。控制台显示正在检测目标单片机 解决方案 将单片机型号由STC89C52更改为STC89C52RC 即 原因 STC89C52与STC89C52RC属于不同型号,STC89C…

NoSQL数据库原理与应用综合项目——起始篇

NoSQL数据库原理与应用综合项目——起始篇 文章目录NoSQL数据库原理与应用综合项目——起始篇0、 写在前面1、项目说明1.1 项目背景1.2 项目功能2、数据集和数据预处理2.1 数据集2.2 数据预处理2.2.1 图书出版日期字段的处理2.2.2 添加id字段2.2.3 价格字段的处理2.2.4 打折字段…

chatgpt接入微信

背景 chatgpt是一个有趣的、聪明的AI机器人。很多人希望可以把这个机器人接入微信群聊里面。 介绍 本项目,使用python制作了一个微信群聊机器人。 微信群聊机器人群聊里面,被艾特后,会基于被艾特的内容,发送对应的文本。可以使…