首页
学习
活动
专区
圈层
工具
发布

8086CPU的寄存器

为了提高CPU的运算速度,减少访问存储器的存取操作,8086CPU内置了相应寄存器,用来暂存参加运算的操作数及运算的中间结果。...指令通过寄存器实现对操作数的操作比通过存储器操作要快得多,因此在编程时,合理利用寄存器能提高程序的运行效率。8086CPU内部提供了14个16位的寄存器。 其结构如下: ?...标志寄存器Flags 标志寄存器Flags用来保存在一条指令执行之后,CPU所处状态 的信息及运算结果的特征,该寄存器又称为程序状态字PSW。...8086CPU设置的是一个16位标志寄存器,但实际上只使用了其中的9位。这9位标志位又分为状态标志位和控制标志位两类。...控制标志位 控制标志位有3个,是用来控制CPU的工作方式或工作状态的标志,它的使用频率相对较低。 IF(中断允许标志位) 用来决定CPU是否响应CPU外部的可屏蔽中断发出的中断请求。

1.3K10

【汇编】(二)寄存器(CPU工作原理)

寄存器(CPU工作原理) CPU = 运算器 + 控制器 +【寄存器】,器件之间通过总线相连; 8086CPU 有14个寄存器,名称分别为: AX,BX,CX,DX,SI,DI,SP,BP,IP,CS...,SS,DS,ES,PSW 通用寄存器 8086CPU 所有的寄存器都是16位的,可以存放2个字节; AX、BX、CX、DX 通常用来存放一般性数据,被称为通用寄存器; 8086上一代CPU...8086CPU有4个段寄存器:CS、DS、SS、ES; 当 8086CPU 要访问内存时,由这4个段寄存器提供内存单元的段地址。  ...CS和IP CS 和 IP 是 8086CPU 中最关键的寄存器,它们指示了 CPU 当前要读取指令的地址。CS 为代码段寄存器;IP 为指令指针寄存器。...小结 1、段地址在8086 CPU 的寄存器中存放。当8086 CPU 要访问内存时,由段寄存器提供内存单元的段地址。8086 CPU 有4个段寄存器,其中 CS 用来存放指令的段地址。

1.2K30
  • 您找到你想要的搜索结果了吗?
    是的
    没有找到

    深入iOS系统底层之CPU寄存器介绍

    CPU内部主要由控制器、运算器和寄存器组成。控制器负责指令的读取和调度,运算器负责指令的运算执行,寄存器负责数据的存储,它们之间通过CPU内的总线连接在一起。...寄存器的分类 寄存器是CPU中的数据临时存储单元,不同的CPU体系结构中的寄存器的数量是不一致的比如: arm64体系下的CPU就提供了37个64位的通用的寄存器,而x64体系下的CPU就提供了16个64...一般情况下64位字长的CPU提供的寄存器的容量是64个bit位,而32位字长的CPU提供的寄存器的容量是32个bit位。...在x64体系的CPU中提供了一个64位的RFLAGS寄存器来作为状态寄存器;arm64体系的CPU则提供了一个32位的CPSR寄存器来作为状态寄存器。...在x64体系的CPU中提供了一个64位的指令寄存器RIP,而在arm64体系的CPU中则提供了一个64位的PC寄存器。

    1.8K41

    使用ALU,RAM,寄存器打造一个CPU

    theme: condensed-night-purple CPU简介 计算机的心脏是中央处理单元,简称“CPU” 。这篇文章就利用前几篇文章中提到过的ALU,RAM,寄存器组件做一个CPU。...CPU能做什么 数学计算指令:让ALU去做加减乘除或者更复杂的数学计算 内存指令:CPU会和内存(RAM)通信,然后操作内存进行读写值 组装CPU零件 16位内存条 首先把上一篇文章的RAM...之后我们会模拟CPU的执行过程,要执行怎样的操作以及怎么样执行就是通过RAM中存储的这八位数字来运行的。 两个八位的寄存器 指令地址寄存器:追踪程序运行到哪里了。...CPU内的组件来执行对应操作。...抽象-CPU RAM是在CPU外面的独立组件,CPU和RAM之间通过”地址线“,”数据线“和”允许读/写线“进行通信, 上面提到的很多机制依然存在于现代处理器里。

    1.2K10

    c++ 寄存器 缓存 cpu 内存之间的关系

    CPU内部结构与寄存器(了解) cpu > 寄存器 > 缓存 > 内存 64位和32位系统区别 寄存器是CPU内部最基本的存储单元 CPU对外是通过总线(地址、控制、数据)来和外部设备交互的...,总线的宽度是8位,同时CPU的寄存器也是8位,那么这个CPU就叫8位CPU 如果总线是32位,寄存器也是32位的,那么这个CPU就是32位CPU 有一种CPU内部的寄存器是32位的,但总线是16...RAX B BX EBX RBX C CX ECX RCX D DX EDX RDX 寄存器、缓存、内存三者关系 按与CPU远近来分,离得最近的是寄存器,然后缓存(CPU缓存),最后内存。...CPU计算时,先预先把要用的数据从硬盘读到内存,然后再把即将要用的数据读到寄存器。于是 CPU寄存器内存,这就是它们之间的信息交换。 那为什么有缓存呢?...由此可以看出,从远近来看:CPU〈---〉寄存器〈---> 缓存 内存。

    1.1K10

    【汇编语言】寄存器(CPU工作原理)(五)—— 段寄存器以及CS和IP

    段寄存器 我们前面讲到,8086CPU在访问内存时要由相关部件提供内存单元的段地址和偏移地址,送入地址加法器合成物理地址。这里,需要看一下,是什么部件提供段地址。段地址在8086CPU的段存器中存放。...8086CPU有4个存器:CS、DS、SS、ES。当8086CPU 要访问内存时由这4个段寄存器提供内存单元的段地址。本章中只看一下CS。 2....CS 和 IP CS和IP是8086CPU中最关键的寄存器,它们指示了CPU当前要读取指令的地址。 CS为代码段寄存器,IP为指令指针寄存器。...注意每幅图中发生的变化(下面对8086CPU的描述,是在逻辑结构、宏观过程的层面上进行的,目的是使读者对CPU工作原理有一个清晰、直观的认识,为汇编语言的学习打下基础。...在8086CPU加电启动或复位后(即CPU刚开始工作时)CS和IP被设置为CS=FFFFH,IP=0000H,即在8086PC机刚启动时,CPU从内存FFFFOH单元中读取指令执行,FFFFOH单元中的指令是

    66920

    【汇编语言】寄存器(CPU工作原理)(一)—— 寄存器的基础知识及存储

    寄存器 一个典型的CPU(此处讨论的不是某一具体的CPU)由运算器、控制器、寄存器(CPU工作原理)等器件构成,这些器件靠内部总线相连。前面所说的总线,相对于CPU内部来说是外部总线。...简单地说,在CPU中: 运算器进行信息处理 寄存器进行信息存储 控制器控制各种器件进行工作 内部总线连接各种器件,在它们之间进行数据的传送 对于一个汇编程序员来说,CPU中的主要部件是寄存器...寄存器是CPU中程序员可以用指令读写的部件。程序员通过改变各种寄存器中的内容来实现对CPU的控制。 不同的CPU,寄存器的个数、结构是不相同的。 8086CPU有14个寄存器,每个寄存器有一个名称。...通用寄存器 8086CPU的所有寄存器都是16位的,可以存放两个字节。 AX、BX、CX、DX这4个寄存器通常用来存放一般性的数据,被称为通用寄存器。 以 AX为例,寄存器的逻辑结构如下图所示。...那么想一想,一个8位寄存器所能存储的数据的最大值为多少 答案也很显然是: 2^{8}-1 3. 字在寄存器中的存储 出于对兼容性的考虑,8086CPU可以一次性处理以下两种尺寸的数据。

    2.7K11

    8086cpu中的标志寄存器与比较指令

    在8086CPU中有一个特殊的寄存器——标志寄存器,该寄存器不同于其他寄存器,普通寄存器是用来存放数据的读取整个寄存器具有一定的含义,但是标志寄存器是每一位都有固定的含义,记录在运算中产生的信息,标志寄存器的机构如下图...: 寄存器中的第1、3、5、 12、 13、 14 、15位在8086CPU中没有使用,其他位置代表不同的含义,各个位置的意思如下(该表截自百度知百科中的标志寄存器): 一般我们常用到的是如下几个标志...1)CF:CF标志表示进位,我们知道对于8086CPU来说,寄存器只能存储16位二进制数,但是有些指令产生的结果可能大于16位,比如: mov ax,200h add ax, 0fffffh 产生的结果已经超过...,至于在它的前面是否使用了cmp指令CPU并不关心,在执行这些指令的时候只要CPU检测到相关的标志满足条件则会自动跳转,比如执行下面的指令: mov ax,0 add ax,ax je s1 inc ax...s1: inc ax CPU执行到je的时候检测到ZF寄存器为0,这个时候会自动跳转到s1处的代码中执行,不会执行je的下一行代码。

    1.5K10

    汇编语言-第二章 寄存器(CPU工作原理)

    简单来说,在CPU中: 运算器进行信息处理 寄存器进行信息存储 控制器控制各种器件进行工作 内部总线连接各种器件,在它们之间进行数据的传送 寄存器是CPU中程序员可以用指令读写的部件。...程序员通过改变各种寄存器中的内容来实现对CPU的控制。 不同的CPU,寄存器的个数、结构是不同的。 2.1 通用寄存器 通用寄存器通常用来存放一般性的数据。...2.8段的概念 "段地址"中的“段”的概念,其实来自于CPU。内存并没有分段,段的划分来自于CPU。 2.9段段寄存器 段地址在8086CPU的段寄存器中存放。...,程序员可以通过改变寄存器的内容实现对CPU的控制。...2.9节~2.12节 小结 段地址在8086CPU的段寄存器中存放。当8086CPU要访问内存时,由段寄存器提供内存单元的段地址。8086CPU有4个段寄存器,其中CS用来存放指令的段地址。

    1.1K20

    【汇编语言】寄存器(CPU工作原理)(七)—— 查看CPU和内存,用机器指令和汇编指令编程

    使用它,可以查看CPU各种寄存器中的内容、内存的情况和在机器码级跟踪程序的运行。...1.2 我们用到的Debug功能 用Debug的R命令查看、改变CPU寄存器的内容 用Debug的D命令查看内存中的内容 用Debug的E命令改写内存中的内容 用Debug的U命令将内存中的机器指令翻译成汇编指令...执行T命令后,CPU执行CS:IP指向的指令,则1000:0处的指令b8 01 00(mov ax,0001)得到执行,指令执行后,Debug 显示输出 CPU中寄存器的状态。...在用T命令执行指令时,注意每条指令执行后,CPU相关寄存器内容的变化 1.9 A命令 前面我们使用E命令写入机器指令,这样做很不方便,最好能直接以汇编指令的形式写入指令。...实操练习 (1) 使用 Debug,将下面的程序段写入内存,逐条执行,观察每条指令执行后CPU中相关寄存器中内容的变化。 提示,可用E命令和A命令以两种方式将指令写入内存。

    99910

    go语言调度器源代码情景分析之二:CPU寄存器

    寄存器是CPU内部的存储单元,用于存放从内存读取而来的数据(包括指令)和CPU运算的中间结果,之所以要使用寄存器来临时存放数据而不是直接操作内存,一是因为CPU的工作原理决定了有些操作运算只能在CPU内部进行...,二是因为CPU读写寄存器的速度比读写内存的速度快得多。...为了便于交流和使用汇编语言进行编程,CPU厂商为每个寄存器都取了一个名字,比如AMD64 CPU中的rax, rbx, rcx, rdx等等,这样程序员就可以很方便的在汇编代码中使用寄存器的名字来进行编程...不同体系结构的CPU,其内部寄存器的数量、种类以及名称可能大不相同,这里我们只介绍目前使用最为广泛的AMD64这种体系结构的CPU,这种CPU共有20多个可以直接在汇编代码中使用的寄存器,其中有几个寄存器在操作系统代码中才会见到...其实修改rip寄存器的值是CPU自动控制的,不需要我们用指令去修改,当然CPU也提供了几条可以间接修改rip寄存器的指令,在汇编语言一节中我们会详细介绍CPU自动修改以及用指令修改rip寄存器值的两种方式

    1.3K40

    【汇编语言】寄存器(内存访问)(七)—— CPU提供的栈机制

    CPU提供的栈机制 现今的CPU中都有栈的设计,8086CPU也不例外。8086CPU提供相关的指令来以栈的方式访问内存空间。这意味着,在基于8086CPU编程的时候,可以将一段内存当作栈来使用。...8086CPU提供入和出栈指令,最基本的两个是PUSH(入栈)和POP(出栈)。 比如,push ax 表示将寄存器ax中的数据送入栈中,pop ax 表示从栈顶取出数据送入 ax。...其二,push ax等入栈指令执行时,要将寄存器中的内容放入当前栈顶单元的上方,成为新的栈顶元素;pop ax等指令执行时,要从栈顶单元中取出数据,送入寄存器中。...现在的问题是:CPU如何知道栈顶的位置?显然,也应该有相应的寄存器来存放栈顶的地址,8086CPU中,有两个寄存器,段存器SS和寄存器SP,栈顶的段地址存放在SS中,偏移地址存放在SP中。...下图描述了8086CPU 对 push 指令的执行过程。 从图中我们可以看出,8086CPU中,入栈时,栈顶从高地址向低地址方向增长。 3.

    42910

    【汇编语言】寄存器(CPU工作原理)(三)—— 物理地址,16位结构CPU以及8086CPU给出物理地址的方法

    文章主要内容:分析物理地址及其组成,16位结构的CPU,探讨8086 CPU如何生成物理地址。 1. 物理地址 CPU访问内存单元时,要给出内存单元的地址。...CPU通过地址总线送入存储器的,必须是一个内存单元的物理地址。在CPU向地址总线上发出物理地址之前,必须要在内部先形成这个物理地址。不同的CPU可以有不同的形成物理地址的方式。...2. 16位结构的CPU 我们说 8086CPU的上一代CPU(8080、8085)等是8位机,而8086是16位机,也可以说8086是16位结构的CPU。那么什么是16位结构的CPU呢?...运算器一次最多可以处理16位的数据 寄存器的最大宽度为16位 寄存器和运算器之间的通路为16位 8086是16位结构的CPU,这也就是说,在8086内部,能够一次性处理、传输、暂时存储的信息的最大长度是...3. 8086CPU给出物理地址的方法 8086CPU有20位地址总线,可以传送20位地址,达到1MB寻址能力。

    93220

    【汇编语言】寄存器(CPU工作原理)(二)—— 汇编指令的基础操作

    正文——(一气呵成解决本文内容) 通过汇编指令控制 CPU 进行工作,看一下下表中的几条指令。...注意: 如:mov ax,18和MOV AX,18的含义相同;bx和BX的含义相同: 接下来看一下CPU执行下表中的程序段的每条指令后,对寄存器中的数据进行的改变。...(这里的丢失,指的是进位值不能在8位寄存器中保存,但是CPU并不真的丢弃这个进位值,关于这个问题,我们将在之后的内容中讨论。)...注意: 此时al是作为一个独立的8位寄存器来使用的,和ah没有关系,CPU在执行这条指令时认为 ah 和a是两个不相关的寄存器。...如果执行 add ax,93H,低8位的进位会存储在ah中,CPU 在执行这条指令时认为只有一个16位寄存器ax,进行的是16位运算。指令 add ax,93H执行后,ax 中的值为:0158H。

    39410

    【汇编语言】寄存器(CPU工作原理)(六)—— 修改CS,IP的指令以及代码段

    修改CS、IP的指令 在CPU中,程序员能够用指令读写的部件只有寄存器,程序员可以通过改变寄存器中的内容实现对CPU的控制。...CPU从何处执行指令是由CS、IP中的内容决定的,程序员可以通过改变CS、IP中的内容来控制CPU执行目标指令。 我们如何改变CS、IP的值呢? 显然,8086CPU必须提供相应的指令。...其实,8086CPU大部分寄存器的值,都可以用mov指令来改变,mov指令被称为传送指令。 但是,mov指令不能用于设置CS、IP的值,原因很简单,因为8086CPU没有提供这样的功能。...✍若想仅修改IP的内容,可用形如“jmp 某一合法寄存器”的指令完成,如 “jmp 某一合法寄存器”指令的功能为:用寄存器中的值修改IP。 jmp ax,在含义上好似:mov IP,ax。...小结 ​ (1)段地址在8086CPU的段寄存器中存放。当8086CPU要访问内存时,由段寄存器提供内存单元的段地址。8086CPU有4个段寄存器,其中CS用来存放指令的段地址。 ​ ​

    56610

    一口气看完45个寄存器,CPU核心技术大揭秘

    序言 前段时间,我连续写了十来篇CPU底层系列技术故事文章,有不少读者私信我让我写一下CPU的寄存器。...所谓通用,即这些寄存器CPU没有特殊的用途,交给应用程序“随意”使用。注意,这个随意,我打了引号,对于有些寄存器,CPU有一些潜规则,用的时候要注意。...指令寄存器 eip: 指令寄存器可以说是CPU中最最重要的寄存器了,它指向了下一条要执行的指令所存放的地址,CPU的工作其实就是不断取出它指向的指令,然后执行这条指令,同时指令寄存器继续指向下面一条指令...段寄存器 段寄存器与CPU的内存寻址技术紧密相关。 早在16位的8086CPU时代,内存资源宝贵,CPU使用分段式内存寻址技术: ?...控制寄存器 控制寄存器是CPU中一组相当重要的寄存器,我们知道eflags寄存器记录了当前运行线程的一系列关键信息。 那CPU运行过程中自身的一些关键信息保存在哪里呢?答案是控制寄存器! ?

    2.8K21

    无名寄存器

    在计算机里面也有寄存器,计算机中的寄存器是看得见,摸得着的实体,寄存器中存储需要经常访问的一些数据。...而vim中也有寄存器的概念,vim中的寄存器是一个虚拟的概念,更像是一块专门用来存储数据的内存缓冲区。在使用vim的过程中离不开寄存器,而且我们很早就用到了寄存器,只是没有发现罢了。...为了解决这个问题,一个思路就是使用有名寄存器。 vim中提供了由a到z的有名寄存器,可以在使用operator 的操作前面指定需要使用的寄存器,引用一个寄存器可以使用 " + 寄存器名的格式。...黑洞寄存器 前面说到 dd会将被删除内容放入到无名寄存器中,如果这段内容我确实不想要了,也不想它占用寄存器,有没有什么办法彻底删除呢,答案是使用黑洞寄存器,顾名思义,放入该寄存器中的内容都被吸走丢失了,...看不出什么区别,那么我们可以试试使用 :reg 命令来查看有名寄存器和黑洞寄存器的值,我们发现黑洞寄存器的值永远为空,而有名寄存器此时多了一条记录。

    1.1K10

    2.2寄存器

    2.2寄存器 | 通用寄存器 数据寄存器 AX 累加器 AH AL BX 基数寄存器 BH BL CX 计数寄存器 CH CL DH 数据寄存器 DH DL 变址寄存器 SI 源变址寄存器...DI 目的变址寄存器 指针寄存器 BP 基址指针寄存器 SP 堆栈指针寄存器 段寄存器 DS 数据段寄存器 ES 附加段寄存器 SS 堆栈段寄存器 CS 代码段寄存器 控制寄存器...IP 指令指针寄存器 PSW 状态标志寄存器 1)数据寄存器 AX一AH(高字节)、AL(低字节)—累加器 BX—BH、BL—基数寄存器 CX—CH、CL—计数寄存器 DX—DH、DL—数据寄存器...运算结果为0,则ZF=1 符号标志SF:最高位为1,表示结果为负数,则SF=1 溢出标志OF:运算过程中发生“溢出”,则OF=1 ②控制标志(是我们可以通过程序来控制的) λ中断允许标志IF IF=1,则CPU...可以接受可屏蔽中断请求 IF=0,则CPU不可以接受屏蔽中断请求 λ方向标志DF DF=1时,地址自动递减; DF=0时,地址自动递增。

    38510
    领券