CPU内部有若干个通用寄存器,它们除了具有与自己名字含义相对应的专用功能外,还具有通用功能,比如传递数据,暂存数据,参与计算等。因此为CPU中的寄存器取名为通用寄存器。16位CPU有14个通用寄存器,32位CPU有16个通用寄存器。下面以32位CPU为例介绍各个通用寄存器的作用。

  • 数据寄存器

    • EAX EBX ECX EDX
    • 数据寄存器主要用于保存运算的操作数和运算结果,从而节省读取操作数所需的占用的总线以及访问存储器的时间
    • AX寄存器:通常称为累加寄存器(Accumulater Register)。累加器可用于乘、除、输入/输出等操作,它们的使用频率很高
    • BX寄存器:基址寄存器(BaseRegister)。用来作为存储器指针使用
    • CX寄存器:计数寄存器(CounterRegister)。在循环和字符串操作时,要用它来控制循环次数;在位操作中,当移多位时,要用CL来指明移位的位数
    • DX寄存器:数据寄存器(DataRegister)。在进行乘、除运算时,它可作为默认的操作数参与运算,也可用于存放I/O的端口地址
    • 在16位CPU中,AX、BX、CX和DX不能作为基址和变址寄存器来存放存储单元的地址,但在32位CPU中,其32位寄存器EAX、EBX、ECX和EDX不仅可传送数据、暂存数据保存算术逻辑运算结果,而且也可作为指针寄存器,所以,这些32位寄存器更具有通用性
  • 变址寄存器
    • ESI EDI SI DI。前两个32为,后两个16位,后两个可以看做是前两个的低16位
    • SI寄存器:SourceIndex
    • DI寄存器:DestinationIndex
    • 寄存器ESI、EDI、SI和DI称为变址寄存器(IndexRegister),它们主要用于存放存储单元在段内的偏移量,用它们可实现多种存储器操作数的寻址方式,为以不同的地址形式访问存储单元提供方便
    • 变址寄存器不可分割成8位寄存器。作为通用寄存器,也可存储算术逻辑运算的操作数和运算结果
    • 它们可作一般的存储器指针使用。在字符串操作指令的执行过程中,对它们有特定的要求,而且还具有特殊的功能
  • 指针寄存器
    • EBP ESP
    • EBP ESP BP SP。前两个32为,后两个16位,后两个可以看做是前两个的低16位
    • 寄存器EBP、ESP、BP和SP称为指针寄存器(PointerRegister),主要用于存放堆栈内存储单元的偏移量,用它们可实现多种存储器操作数的寻址方式,为以不同的地址形式访问存储单元提供方便。
    • 指针寄存器不可分割成8位寄存器。作为通用寄存器,也可存储算术逻辑运算的操作数和运算结果
    • 它们主要用于访问堆栈内的存储单元,并且规定:BP为基指针(BasePointer)寄存器,用它可直接存取堆栈中的数据;SP为堆栈指针(StackPointer)寄存器,用它只可访问栈顶
  • 段寄存器
    • 段寄存器是根据内存分段的管理模式而设置的。内存单元的物理地址由段寄存器的值和一个偏移量组合而成的,这样可用两个较少位数的值组合成一个可访问较大物理空间的内存地址
    • CS:代码段寄存器(CodeSegmentRegister),其值为代码段的端值
    • DS:数据段寄存器(DataSegmentRegister),其值为数据段的段值
    • ES:附加段寄存器(ExtraSegmentRegister),其值为附加数据段的段值
    • SS:堆栈段寄存器(StackSegmentRegister),其值为堆栈段的段值
    • FS:附加段寄存器(ExtraSegmentRegister),其值为附加数据段的段值
    • GS:附加段寄存器(ExtraSegmentRegister),其值为附加数据段的段值
    • 在16位CPU系统中,它只有4个段寄存器,所以,程序在任何时刻至多有4个正在使用的段可直接访问;在32位微机系统中,它有6个段寄存器,所以,在此环境下开发的程序最多可同时访问6个段
    • 32位CPU有两个不同的工作方式:实方式和保护方式。在每种方式下,段寄存器的作用是不同的。有关规定简单描述如下:
      • 实方式:前4个段寄存器CS、DS、ES和SS与先前CPU中的所对应的段寄存器的含义完全一致,内存单元的逻辑地址仍为“段值:偏移量”的形式。为访问某内存段内的数据,必须使用该段寄存器和存储单元的偏移量。
      • 保护方式:在此方式下,情况要复杂得多,装入段寄存器的不再是段值,而是称为“选择子”(Selector)的某个值。 选择子包含访问控制等属性。
  • 指令指针寄存器
    • 指令指针EIP、IP(InstructionPointer)是存放下次将要执行的指令在代码段的偏移量。在具有预取指令功能的系统中,下次要执行的指令通常已被预取到指令队列中,除非发生转移情况。所以,在理解它们的功能时,不考虑存在指令队列的情况
  • 标志寄存器
    • CF:CarryFlag
    • PF:ParityFlag
    • AF:Auxiliary CarryFlag
    • ZF:ZeroFlag
    • SF:SignFlag
    • OF:OverflowFlag

CPU中的通用寄存器相关推荐

  1. 【CPU中的主要寄存器】

    (1)数据缓冲寄存器(DR)         数据缓冲寄存器用来暂时存放算术逻辑运算单元(ALU)运算结果,或由数据存绪器读出的一个数据字,或来自外部接口的一个数据字,缓冲寄存器的作用是: ① 作为A ...

  2. CPU中的八个通用寄存器

    通用寄存器可用于传送和暂存数据,也可参与算术逻辑运算,并保存运算结果.八个寄存器都可以作为普通的数据寄存器使用.(共同功能) 除此之外,它们还各自具有一些特殊功能,下面详细介绍.(特殊功能) 16位c ...

  3. CPU 中通用寄存器的作用

    在计算机的中央处理器(CPU)中,通用寄存器(General-Purpose Registers)是其中的一个重要组件.通用寄存器是一种高速的内部存储器,用于存储和操作计算机中的数据.它们是CPU的一 ...

  4. CPU中的主要寄存器:有六类寄存器:指令寄存器(IR)、程序计数器(PC)、地址寄存器(AR)、数据寄存器(DR)、累加寄存器(AC)、程序状态字寄存器(PSW)

    在CPU中至少要有六类寄存器:指令寄存器(IR).程序计数器(PC).地址寄存器(AR).数据寄存器(DR).累加寄存器(AC).程序状态字寄存器(PSW).这些寄存器用来暂存一个计算机字,其数目可以 ...

  5. 函数调用关系图如何画_程序是如何在 CPU 中运行的(二)

    笔者能力有限,如果文中出现错误的地方,还请各位朋友能够给我指出来,我将不胜感激,谢谢~ 前言 在上一篇文章中<程序是如何在 CPU 中运行的(一)>笔者讲述了程序中一条一条指令以及一条一条 ...

  6. CPU中寄存器作用及说明

    各种计算机的CPU可能不同,但是在CPU中至少至少要有六类寄存器:①指令寄存器(IR):②程序计数器(PC):③数据地址寄存器(AR):④缓冲寄存器(DR):⑤通用寄存器(R0~R3);⑥状态字寄存器 ...

  7. 计算机硬件系统-CPU中的寄存器

    本节主要介绍计算机硬件系统中CPU的常用寄存器,包括通用寄存器和专用寄存器的介绍. CPU的常用寄存器分为通用寄存器和专用寄存器. 通用寄存器:用来存放原始数据和运算结果,一般可以由CPU直接访问. ...

  8. 【转帖】超能课堂(186) CPU中的那些指令集都有什么用?

    超能课堂(186) CPU中的那些指令集都有什么用? https://www.expreview.com/68615.html 不明觉厉 开始的地方 第一大类:基础运算类x86.x86-64及EM64 ...

  9. CPU中的主要寄存器

    在CPU中至少要有六类寄存器:指令寄存器(IR).程序计数器(PC).地址寄存器(AR).数据寄存器(DR).累加寄存器(AC).程序状态字寄存器(PSW).这些寄存器用来暂存一个计算机字,其数目可以 ...

最新文章

  1. 10 行 Python 代码自动清理电脑重复文件,解放双手!
  2. 中国工程院院士高文:运用好云计算、大数据会为城市发展带来变革
  3. shell中正则表达式详解_【转】【shell】正则表达式使用详解(一)
  4. CMarkup类在VC中的使用
  5. SPOJ 694/705 后缀数组
  6. 以Jar形式为Web项目提供资源文件(JS、CSS与图片)
  7. pandas流式读取数据,不再担心内存炸裂
  8. win10系统配置服务器地址,win10系统配置服务器地址
  9. 对Python列表进行封装和二次开发实现自定义栈结构
  10. 斯坦福大学CS143编译原理课程笔记:2.编译器结构
  11. XMind思维导图文件损坏,无法打开怎么办?
  12. [Python知识图谱] 四.Python和Gephi实现中国知网合作关系知识图谱
  13. 如何管理软件测试环境
  14. 软件测试按照各种方式分类
  15. 电脑连接安卓手机摄像头的方法(含DroidCam安装包及简明使用教程)
  16. Qt开发笔记:OpenSSL库介绍、windows上mingw32版本的OpenSSL编译模块化
  17. java解密_JAVA加解密
  18. 微信聊天记录怎么备份?
  19. 学习java随堂练习-20220617
  20. vex机器人 亚洲公开赛_VEX机器人亚洲公开赛,乐博乐博学员勇夺双料冠军!

热门文章

  1. K8S taint(污点)和tolerations(污点容忍)
  2. 如何在微信直接下载APP(iOS/Android)的解决方案
  3. 制导武器的分布式半实物仿真系统研究
  4. Log4j2配置之Appenders
  5. 苹果、google、微软的那些事(iPhone)
  6. 饥荒搜索服务器未响应,饥荒联机版代码用不了?东西无法捡起,怪物打不了?试试这个方法...
  7. Mitmproxy代理设置和证书安装
  8. 头发保护 - 二硫化硒洗剂
  9. Note: LSR LER
  10. LaTeX写一份完整的物理实验报告