CPU内部的寄存器中,有一种特殊的寄存器具有以下三种作用。

用来存储相关指令的某些执行结果

用来为CPU执行相关指令提供行为依据

用来控制CPU的相关工作方式

这种特殊的寄存器在8086CPU种,被称为标志寄存器(flag)。8086CPU的标志寄存器有16位,其中存储的信息通常被称为程序状态字(PSW)。

8086CPU的flag寄存器的结构如下图。

flag的1、3、5、12、13、14、15位在8086CPU中没有使用,不具有任何含义。而0、2、4、6、7、8、9、10、11位都具有特殊含义。

一、ZF标志

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

在8086CPU的指令集中,有的指令的执行是影响标志寄存器的,比如,add、sub、mul、div、inc、or、and等,它们大都是运算指令(进行逻辑或算术运算);有的指令的执行对标志寄存器没有影响,比如:mov、push、pop等,它们大都是传送指令。在使用一条指令的时候,要注意这些指令的全部功能,其中包含执行结果对标志寄存器的哪些标志位造成影响。

二、PF标志

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

三、SF标志

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

SF标志,就是CPU对有符号运算结果的一种记录,它记录数据的正负。在我们将数据当作有符号数来运算的时候,可以通过它来得到结果的正负。如果我们将数据当作无符号来运算,SF的值则没有意义,虽然相关的指令影响了它的值。

四、CF标志

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

五、OF标志

flag的第11位是OF,溢出标志位。一般情况下,OF记录了有符号数运算的结果是否发生了溢出。如果发生溢出,OF=1;如果没有,OF=0.

一定要注意CF和OF的区别:CF是对无符号运算有意义的标志位,而OF是对有符号运算有意义的标志位。

六、DF标志位和串传送指令

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

df=0  每次操作后si、di递增

df=1   每次操作后si、di递减

下面有几个串传送指令

格式:movsb

功能:执行movsb指令相当于进行下面几步操作。

1) ((es)*16+(di)) = ((ds)*16+(si))

2) 如果df=0 则 (si)=(si)+1     (di)=(di)+1

如果df=1则:   (si)=(si)-1     (di)=(di)-1

当然也可以传送一个字

格式:movsw

功能:将ds:si指向的内存单元中的字送入es:di中,然后根据标志寄存器df位的值,将si和di递增2或递减2.

movsb和movsw进行的是串传送操作中的一个步骤,一般来说,movsb和movsw都和rep配合使用,格式如下:

rep  movsb

rep功能:根据cx的值,重复执行后面的串传送指令。由于每执行一次movsb指令si和di都会递增或递减指向后一个单元或前一个单元,则rep movsb就可以循环实现(cx)个字符的传送。

8086CPU提供下面两条指令对df位进行设置。

cld指令: 将标志寄存器的df位置0

std指令: 将标志寄存器的df位置1

1)编程,用串传送指令,将data段中的第一个字符串复制到它后面的空间中。

data segment

db'welcome to masm!'db16 dup (0)

data ends

code segmentmovax,datamovds,axmov si, 0

moves,axmov di,16

mov cx,16

cld

rep movsbcode ends

end

2)编程,用串传送指令,将F000段中的最后16个字符复制到data段中。

data segment

db16 dup (0)

data ends

code segmentmovax,0f000hmovds,axmovsi, 0ffffhmovax,datamoves,axmov di, 15

mov cx, 16

std

rep movsbcode ends

end

标志寄存器df_标志寄存器相关推荐

  1. 标志寄存器df_标志寄存器的概念

    首先说一下标志寄存器的概念.在8086cpu中标志寄存器都是16位的,而其中存储的信息被称为程序状态字(一段包含系统状态的内存或者是硬件区域).标志寄存器既然是寄存器,那么它也是用来存储信息的,只是它 ...

  2. 汇编中的通用寄存器、标志寄存器、段寄存器

    通用寄存器: 寄存器和变量差不多,目的都是用于保存一些即将操作的数据 EAX(accumulator) 寄存器:扩展累加寄存器(一般在乘/除中会被主动调用),也可以用于其他用途 ECX(Count) ...

  3. 汇编常见寄存器以及标志位

    汇编常见寄存器以及标志位 通用寄存器 简写 英文全称 中文 作用 AX accumulator 累加器 存放操作数,与外部设备 BX base 通用寄存器 基址寄存器(计算存储器地址时用) CX co ...

  4. 状态标志与状态标志寄存器

    1. 什么是状态标志寄存器 状态标志位(Status Flags): 状态标志被分配到到一个称为标志寄存器(Status Flags Register)的特殊寄存器中. 该寄存器包含: Zero Fl ...

  5. pic c语言 位标志,PIC单片机状态寄存器中的C(进位/借位位标志)

    查阅PIC单片机芯片手册,关于进位/借位位的说明为: C:进位/借位位. 1 = 结果的最高位发生了进位 0 = 结果的最高位未发生进位 同时有一条标注:借位的极性是相反的. 通过以上说明,可以将C的 ...

  6. 汇编指令:MRS(读)和MSR(写)指令操作CPSR寄存器和SPSR寄存器使用

    1.MSR和MRS指令介绍 MRS 指令: 对状态寄存器CPSR和SPSR进行读操作.通过读CPSR可以获得当前处理器的工作状态.读SPSR寄存器可以获得进入异常前的处理器状态(因为只有异常模式下有S ...

  7. 操作系统之寄存器——这篇寄存器讲的有点意思!

    下面我们就来介绍一下关于寄存器的相关内容.我们知道,寄存器是 CPU 内部的构造,它主要用于信息的存储.除此之外,CPU 内部还有运算器,负责处理数据:控制器控制其他组件:外部总线连接 CPU 和各种 ...

  8. IA-32寄存器(通用寄存器、EFLAGS寄存器、指令指针寄存器、段寄存器)

    文章目录 一.通用寄存器(GPR) 二.EFLAGS寄存器(标志寄存器) 三.指令指针寄存器(EIP) 四.段寄存器(Segment Register) 通用寄存器(General Purpose R ...

  9. Ollydbg中C标志位P标志位A标志位Z标志位以及S,T,D,0标志位含义详解

    转载自https://www.cnblogs.com/whzym111/p/6374855.html 知识点: l 标志位 置位相关指令   l 标志寄存器PSW 标志寄存器PSW(程序状态字寄存器P ...

最新文章

  1. 添加打印机还显示脱机_打印机总是显示脱机无法打印的解决办法
  2. oracle0级备份和全备份实录_蓝光硬盘备份管理系统在档案系统的应用
  3. [CodeForces1110C]Meaningless Operations
  4. 绝地求生5月22日服务器维护,绝地求生5月22日更新了什么内容 吃鸡5月22日维护公告...
  5. UICollectionView,CollectionView,瀑布流
  6. 复杂性思维中文第二版 附录 A、算法分析
  7. 超硬核!学霸把操作系统经典算法给敲完了!要知行合一
  8. 2021年信用卡行业发展报告
  9. 为用户设计的产品,就应该用用户熟悉的语言
  10. 翻译pdf中的英文 python_浅谈python实现Google翻译PDF,解决换行的问题
  11. 【python之路10】python实例练习
  12. python通信系统仿真_详解MATLAB/Simulink通信系统建模与仿真 PDF 高清版
  13. Base64 Base32 Base16全家桶
  14. 仿网易云音乐小程序-uniapp
  15. Ctrl+Shift+End
  16. 苹果双系统怎么切换_苹果电脑双系统的好处
  17. mysql 自动截断_MySql中关于超长自动截断的案例详解
  18. 《微信》医保支付功能介绍
  19. Dreamweaver试题及答案一
  20. 【技术详解】阿里云AIoT物模型支撑设备规模已超亿级

热门文章

  1. 深入PHP语法(1)
  2. Lua三人帮出新书 Lua Programming Gems
  3. vivo pad和小米平板5pro哪个值得买 两者配置对比
  4. 【Simulink教程案例4】使用Simulink自带的模块实现PID控制器,并对比案例1的PID控制器
  5. mapboxgl+echarts 简单制作专题地图
  6. linux投影使用方法,Ubuntu Linux投影的操作
  7. 【牛客网面经整理】0805百度面经
  8. markdown甘特图的绘制
  9. mmdetection - config配置文件之datasets
  10. Echarts之饼图内外圆重叠且图例不统一