8086CPU的寄存器

  • 通用寄存器
    • 数据通用寄存器
    • 地址指针与变址寄存器
  • 控制寄存器
    • 指令指针寄存器IP
    • 标志寄存器Flags
      • 状态标志位
      • 控制标志位
  • 后续

为了提高CPU的运算速度,减少访问存储器的存取操作,8086CPU内置了相应寄存器,用来暂存参加运算的操作数及运算的中间结果。指令通过寄存器实现对操作数的操作比通过存储器操作要快得多,因此在编程时,合理利用寄存器能提高程序的运行效率。8086CPU内部提供了14个16位的寄存器。
其结构如下:

通用寄存器

通用寄存器分为数据通用寄存器和地址指针与变址寄存器两组。

数据通用寄存器

数据通用寄存器包括AX、BX、CX和DX共4个16位寄存器,他们既可以作为16位寄存器使用,也可以将每个寄存器分开作为两个独立的8位寄存器使用,即高8位寄存器AH、BH、CH、DH和低8位寄存器AL、BL、CL、DL。这些寄存器既可以作为目的操作地址,保存运算的中间结果或最后结果。

地址指针与变址寄存器

地址指针寄存器SP、BP与变址寄存器SI、DI主要用来存放或指示操作数的偏移地址,其中SP中存放当前堆栈段中栈顶的偏移地址。在进行堆栈操作时,SP的值随着栈顶的变化而自动改变,但始终指向栈顶位置;BP是访问堆栈时的基址寄存器,存放堆栈中某一存储单元的偏移地址,使用BP是为了访问堆栈区内任意位置的存储单元。

变址寄存器SI和DI用来存放当前数据所在段的存储单元的偏移地址。SI和DI除了可作为一般的变址寄存器使用外,在串操作指令中SI规定用作存放源操作数(即源串)的偏移地址,故称为源变址寄存器;DI规定用作存放目的操作数(即目的串)的偏移地址,故称为目的的变址寄存器。

上图中的8个16位通用寄存器在一般情况下都具备通用性,但为了缩短指令代码的长度,对某些通用寄存器又规定了专门的用途。列如在字符串处理指令和循环指令中,约定必须用CX作为计数器存放串的长度,这样可以简化指令书写形式。这种使用方法称为“隐含寻址”。

控制寄存器

控制寄存器和指令指针寄存器IP和标志寄存器Flags两个。

指令指针寄存器IP

IP用来存放代码段中的偏移地址,在程序运行过程中,它始终指向下一条要执行的指令的首地址。IP实际上起着控制指令流的执行流程,是一个非常重要的控制寄存器。它的内容由BIU自动修改,用户不能通过指令预置或直接修改,但有些指令的执行可以修改它的内容。譬如在遇到中断指令INT或子程序调用指令CALL时,IP中的内容将被自动修改。

标志寄存器Flags

标志寄存器Flags用来保存在一条指令执行之后,CPU所处状态 的信息及运算结果的特征,该寄存器又称为程序状态字PSW。8086CPU设置的是一个16位标志寄存器,但实际上只使用了其中的9位。这9位标志位又分为状态标志位和控制标志位两类。

状态标志位

状态标志位用来记录刚刚执行完算术运算、逻辑运算等指令后的状态特征,共有6个。

  1. CF(进位标志位)
    主要用来反映运算运算结果是否产生进位或借位。如果运算结果的最高位向前产生了一个进位(加法)或借位(减法)时,CF=1,否则为0.使用该标志位的情况有多字(字节)数的加、减运算,无符号数的大小比较,移位操作,专门改变CF值的指令等。
  2. PF(奇偶标志位)
    同于反映运算结果的奇偶性,即第八位中含有“1”的个数。如果“1”的个数为偶数,则PF的值为1,否则为0。利用PF可根据奇偶校验检查,或产生奇偶校验位。
  3. AF(辅助进位标志位)
    表示加法或减法运算结果中D3位向D4位产生进位或借位的情况,当有进位(借位)时AF=1;否则AF=0/该标志用于BCD运算中辩别是否需要进行十进制调整。
  4. ZF(零标志位)
    用来反映运算结果是否为0.如果运算结果为0,则ZF=1,否则ZF=0;
  5. SF(符号标志位)
    用来反映运算结果的符号位,它与运算结果的最高位相同。有符号数采用补码表示法,所以,SF也就反映了运算结果的正负号。当运算结果为负数时,SF=1,否则为0.
  6. OF(溢出标志位)
    用来反映有符号数运算所得结果是否溢出。如果运算结果超过当前运算位数所能表示的范围,则称为溢出,OF的值被置为1,否则,OF的值被清为0.具体来说,就是当有符号数字节运算的结果超出了-128~ +127范围,或者字运算时的结果超出了-32768~ ++32767范围,就产生溢出。
    编写程序时,以上6个状态标志位中的CF、ZF、SF和OF的使用频率较高,PF和AF的使用频率相对较低。

控制标志位

控制标志位有3个,是用来控制CPU的工作方式或工作状态的标志,它的使用频率相对较低。

  1. IF(中断允许标志位)
    用来决定CPU是否响应CPU外部的可屏蔽中断发出的中断请求。当IF=1,CPU响应;当IF=0时,CPU不响应。8086指令系统中提供了专门改变IF值的指令。
  2. DF(方向标志位)
    用来控制串操作指令中地址指针的变化方向。在串操作指令中,当DF=0时,地址指针为自动增量,即由低地址向高地址变化;当DF=1时,地址指针自动减量,即由高地址向低地址变化。指令系统中提供了专门改变DF值的指令。
  3. TF(追踪标志位)
    TF亦称为单步标志位。TF被置为1时,CPU进入单步执行方式,即每执行一条指令,产生一个单步中断请求。
    单步执行方式主要用于程序的调试,指令系统中没有提供专门的指令来改变TF的值,但用户可以通过编程办法来改变其值。

后续

如果想了解更多物联网、智能家居项目知识,可以关注我的项目实战专栏。
或者关注公众号。

编写不易,感谢支持。

8086CPU的寄存器相关推荐

  1. 汇编(8086cpu): ip寄存器与指令的关系

    指令的执行过程: 1. cpu从cs:ip所指向的内存单元读取指令,存放到指令缓存器中. 2. ip=ip+所读指令的长度,从而指向下一条指令. 3. 执行指令缓存器中内容,回到步骤1. 8086cp ...

  2. 汇编语言8086CPU之寄存器总结

    寄存器是什么呢? 其实很简单,寄存器就是个存储信息的单元或者说是器件又或者说是容器而已,就比如内存也是一个存储介质或者说是存储单元而已,其实寄存器从理解上来说和内存差不多,只不过寄存器(这里讨论的寄存 ...

  3. 汇编语言学习-寄存器(CPU工作原理)

    寄存器概述: 1,一个典型的CPU由运算器,控制器,寄存器等器件组成,这些器件靠内部总线相连. 内部总线实现CPU内部各个器件之间的联系.外部总线实现CPU和主板上其它器件的联系. 2,8086CPU ...

  4. 汇编语言之标志寄存器

     1.标志寄存器 CPU内部的寄存器中,有一种特殊的寄存器(对于不同的处理机,个数和结构都可能不同)具有以下3种作 用: 1. 用来存储相关指令的某些执行结果. 2. 用来为CPU执行相关指令提供 ...

  5. 寄存器和存储器的区别_汇编语言 第二章 寄存器

    第二章 寄存器 在 CPU 中: 运算器进行信息处理: 寄存器进行信息存储(主要部分,工作原理): 控制器控制各种器件进行工作: 内部总线连接各种器件,在它们之间进行数据的传送. 不同的 CPU,寄存 ...

  6. 王爽 《汇编语言》之寄存器

    寄存器概念 寄存器是CPU中的主要部件,是CPU中程序员可以读写的部件.程序员通过改变各种寄存器中的内容来实现对CPU的控制. 不同的CPU,寄存器的个数.结构是不同的.8086CPU有14个寄存器, ...

  7. 汇编:CPU结构 - FLAG标志寄存器和相关指令

    文章目录 一.概述 1.标志寄存器的作用 2.8086CPU标志寄存器的结构 3.debug查看标志位 二.标志位 1.CF(0):进位标志位 2.PF(2):奇偶标志位 3.AF(4):辅助进位标志 ...

  8. 小吴学汇编之第二章--寄存器(1)

    第二章   寄存器 上次我们学完了第一章,懂了一些基本的知识,今天,小吴带你们学习第二章内容寄存器. 一个典型的CPU由运算器.控制器.寄存器(CPU工作原理)等器件构成,这些器件靠总线连接,我们上一 ...

  9. 8086汇编语言精华笔记总结~

    目录 第一章 汇编语言的基础知识 1.计算机系统概述 硬件(Handware) 软件(Software) 2.汇编语言介绍 3.数据表示 1. BCD码 2. ASCII码 3. 真值和机器数 4. ...

最新文章

  1. Nginx静态文件的配置与安全认定
  2. class文件的产生过程
  3. 自己动手构造编译系统:编译、汇编与链接2.1.3 符号表管理
  4. 五个同事想计算他们的平均工资,但公司不让吐露薪资,如何实现?
  5. 【华为云技术分享】《跟唐老师学习云网络》—ARP你在哪
  6. java mina文件传输_如何将Apache MINA FTP服务器中上传的文件重定向到数据库?
  7. 如何打造139团队(不同层次人员的选择与培养,大型研发团队,大型敏捷开发团队)...
  8. 如何配置Mac OS X实现LAN唤醒?
  9. 工业AI落地场景案例实战,飞桨EasyDL让工业更智能
  10. 英文论文评审意见_英文论文审稿意见汇总
  11. pug 编译html,pug之HTML模板引擎安装编译教程
  12. 10步Navicat for Mysql12.1.20破解激活方法(适用于Navica12.1系列软件)
  13. Axure绘制跑马灯
  14. 个人总结-网络安全学习和CTF必不可少的一些网站
  15. canvas-变换-scale(缩放)
  16. 远程同步软件rsync(一)
  17. 中国信通院 | 车联网白皮书合集
  18. 【天祺围棋】围棋分段位【打谱】【猜局】提高法
  19. aps助油田服务与设备行业实现数字化
  20. 近代物理实验 数字图像文件操作及代数运算 含思考题及其答案 和图像运行结果

热门文章

  1. 如何输入一个整数逆序输出_如何理解运算放大器的共模输入和输出摆幅限制?...
  2. selenium-python:运行后报浏览器不兼容 disconnected: unable to connect to renderer
  3. 两种进入容器的方法 - 每天5分钟玩转 Docker 容器技术(23)
  4. linux的定cron计划任务命令
  5. uni-app 图片适配 动态计算图片高度
  6. 从0开始架构一个IOS程序 ——04— UITabBarController和自定义TabBar 搭建主页面
  7. 五、Spring中的@Import注解
  8. VB之修改机器码达到WG
  9. (十四)面向对象之多态
  10. python基础入门--input标签、变量、数字类型、列表、字符串、字典、索引值、bool值、占位符格式输出...