body, table{font-family: 微软雅黑; font-size: 13.5pt} table{border-collapse: collapse; border: solid gray; border-width: 2px 0 2px 0;} th{border: 1px solid gray; padding: 4px; background-color: #DDD;} td{border: 1px solid gray; padding: 4px;} tr:nth-child(2n){background-color: #f8f8f8;}

内部总线:实现 CPU 内部各个期间之间的联系;外部总线实现 CPU 和主板上其他器件的联系。
在 CPU 中:运算器进行信息处理,寄存器进行信息存储,控制器控制各种器件进行工作,内存总线连接各种器件实现它们之间进行数据传送。
CPU 主要部件是寄存器,寄存器是 CPU 中程序员可以用指令读写的部件。程序员可以通过改变各种寄存器中的内容来实现对 CPU 的控制。
不同的 CPU ,寄存器个数、结构不相同。8086CPU 有14个寄存器,AX  BX  CX  DX  SI  DI  SP  BP  IP  CS  SS  DS  ES  PSW  。

通用寄存器,8086CPU 16位,用来存放一般性的数据。AX  BX  CX  DX 。
8086CPU 上一代 CPU 中的寄存器都是8位的,为了保证兼容
AX 可分为 AH 和 AL ;
BX 可分为  BH 和 HL;
CX 可分为  CH 和 CL ;
DX 可分为  DH和 DL;


字在寄存器中的存储
8086CPU 可以一次性处理两种尺寸的数据
字节(byte):8 位,可以存在 8 位寄存器中。
字(word):16 位,高位字节和低位字节。
**汇编指令后面的操作数的位数必须一致
8086CPU   是16位机;●运算器一次最多可以处理16位的数据;●寄存器的最大宽度为16位;●寄存器和运算器之间的通路为16位。
8086CPU 有20位地址总线,可以传送20位地址,达到1MB的寻址能力。8086CPU 又是16位结构,在内部一次性处理、传输、暂时存储的地址为16位。从 8086CPU 内存来看,如果将地址从内部简单地发出,那么它只能送出16位的地址,表现的寻址能力只有 64KB 。所以 8086CPU 内部用两个16位地址合成的方法来形成一个 20位 的物理地址。
1、CPU 中的相关部件提供两个 16 位的地址,一个称为段地址,另一个称为-偏移地址;
2、段地址和偏移地址通过内部总线送入一个称为地址加法器的部件;
3、地址加法器将两个16位地址合成为一个20位的物理地址;
4、地址加法器通过内部总线将20位物理地址送入输入输出控制电路;
5、输入输出控制电路将20位物理地址送上地址总线;
6、20位物理地址被地址总线传送到存储器。
物理地址=段地址*16+偏移地址
eg:8086访问 123C8H 内存单元。
段地址 SA  偏移地址 EA

8086CPU 有4个段寄存器: CS  DS  SS  ES ,当 CPU 要访问内存时,要相关部件提供内存单元的段地址和偏移地址,送入地址加法器合成物理地址。这个段地址就是由段寄存器提供的。
 CSIP 指示了 CPU 当前要读取指令的地址,CS 为代码段寄存器,IP 为指令指针寄存器。
任意时刻,设 CS 中的内容为 M ,IP 中的内容为 N ,8086CPU 将从内存 M*16+N 单元开始读取一条指令。即 CPU 将CS:IP 指向的内容当做指令执行
8086CPU 工作流程:
1、从 CS:IP 指向内存单元读取指令,读取的指令进入指令缓冲器;
2、IP = IP+所读取指令的长度,从而指向下一条指令;
3、执行指令,转到步凑1;
在 8086CPU 加电启动或复位后,CS 和 IP 被设置为 CS=F000H , IP=FFFFH , CPU从这条指令开始执行。
在内存中,指令和数据没有任何区别都是二进制信息,CPU 如何把有的信息看作指令,有的信息看作数据。可以说CPU将 CS:IP 指向的内存单元中的内容看作指令,因为任何时候,CPU 将 CS 、IP  中的内容当做指令的段地址和偏移地址,用他们合成指令的物理地址,到内存中读取伪指令。
能够修改 CS、IP 的指令:jmp;要同时修改两个的内容,可用指令“jmp 段地址:偏移地址”;
eg:jmp 2AE3:3 ,执行后: CS=2AE3H,IP=0003H ,CPU 将从 2AE33H 处读取指令。
只修改 IP 内容, jmp ax , 指令执行前:ax=1000H , CS=2000H , IP=0003H ; 指令执行后:ax=1000H , CS=2000H , IP=1000H ;

代码段:可以将长度为 N 的一组代码,存在一组地址连续、起始地址为16的倍数的内存单元,这段内存用来存放代码的,就叫做代码段;

寄存器(CPU原理)的更多相关文章

  1. 汇编语言(学习笔记----寄存器CPU互作原理)

    一.段寄存器 1.段寄存器就是提供段地址的,8086CPU有4个段寄存器:CS(代码段寄存器),DS(数据段寄存器),SS(堆栈段寄存器),ES(附加段寄存器) 2.当8086CPU要访问内存时,由这 ...

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

    1- 对于汇编程序员来说,CPU中主要的部件是寄存器,这些寄存器是:AX BX CX DX SI DI SP BP IP CS SS DS ES PSW. 2- 8086CPU所有寄存器都是16位的, ...

  3. CPU原理

    cpu map 1.CPU的整体架构: 2.从CPU向内存 3.CPU和内存的关系图 4.CPU指令集 5.A+B 6.结果输入寄存器 7.寄存器中的临时存储,用来暂存B 8.将B传入寄存器 9.A会 ...

  4. 8.变量内存CPU原理

    编译器先明确是什么类型,然后明确变量名,变量表管理所有的变量,不在变量表内部的变量不能引用.每个变量对应一整块内存 a+1所计算出来的值在寄存器中,只有变量可以被赋值,变量必须在内存里面 c语言内嵌汇 ...

  5. 【基础知识】CPU原理之减法、乘法和除法

    中介绍了布尔逻辑.数学和电路的关系,我们也得到了与门.或门.非门.或非门.与非门.异或门等门电路以及一个加法器,并且了解了计算机是如何做加法的,这篇文章介绍一下计算机是如何做减法以及乘除法的. 0x0 ...

  6. 寄存器CPU存储地址信息和数据信息的地方 CPU通过地址寄存器区分指令和数据

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

    序言 前段时间,我连续写了十来篇CPU底层系列技术故事文章,有不少读者私信我让我写一下CPU的寄存器. 寄存器这个太多太复杂,不适合写故事,拖了很久,总算是写完了,这篇文章就来详细聊聊x86/x64架 ...

  8. [汇编] 002基础知识-CPU和寄存器

    CPU是什么 当然这里的内存不仅仅指电脑上的内存,例如:我的金士顿8G内存,七彩虹1G独显,在这里来说,显卡也是有内存的(寄存器) CPU如何控制其它部件的? 问题:CPU是如何和电脑主机中其它芯片有 ...

  9. .NET垃圾回收(GC)原理

    作为.NET进阶内容的一部分,垃圾回收器(简称GC)是必须了解的内容.本着“通俗易懂”的原则,本文将解释CLR中垃圾回收器的工作原理. 基础知识 托管堆(Managed Heap) 先来看MSDN的解 ...

随机推荐

  1. TurnipBit口袋编程计算机:和孩子一起DIY许愿的流星

    听说对着流星许愿,许的愿望都会实现,虽然不知道这个说法是不是真的,但是流星还是很好看的,为了能一直看到流星,今天就自己做一个流星保存下来,想什么时候看,就什么时候看. 首先需要想象一下流星是什么样子的 ...

  2. [Micropython][ESP8266] TPYBoard V202 之MQTT协议接入OneNET云平台

    随着移动互联网的发展,MQTT由于开放源代码,耗电量小等特点,将会在移动消息推送领域会有更多的贡献,在物联网领域,传感器与服务器的通信,信息的收集,MQTT都可以作为考虑的方案之一.在未来MQTT会进 ...

  3. iOS自带API集成二维码、条形码扫描

    源码于 :https://github.com/wangjinfeng/ScanForiOSAPI/tree/main 1.AVFoundation.framework,QuartzCore.fram ...

  4. 在树莓派上编译安装golang环境

    请看我在掘金的文章

  5. 从Unity中的Attribute到AOP(一)

    首先来看一下微软官方对Attributes(C#)的定义: https://docs.microsoft.com/en-us/dotnet/csharp/programming-guide/conce ...

  6. AOP及spring AOP的使用

    介绍 AOP是一种概念(思想),并没有设定具体语言的实现. AOP是对oop的一种补充,不是取而代之. 具体思想:定义一个切面,在切面的纵向定义处理方法,处理完成之后,回到横向业务流. 特征 散布于应 ...

  7. 一步一步创建ASP.NET MVC5程序[Repository+Autofac+Automapper+SqlSugar](五)

    前言 Hi,大家好,我是Rector 时间飞逝,一个星期又过去了,今天还是星期五,Rector在图享网继续跟大家分享系列文本:一步一步创建ASP.NET MVC5程序[Repository+Autof ...

  8. 51 Nod 1005 大数加法【Java大数乱搞,python大数乱搞】

    1005 大数加法 基准时间限制:1 秒 空间限制:131072 KB 分值: 0 难度:基础题 给出2个大整数A,B,计算A+B的结果. Input 第1行:大数A 第2行:大数B (A,B的长度  ...

  9. HDU 1004 Let the Balloon Rise【STL<map>】

    Let the Balloon Rise Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 65536/32768 K (Java/Oth ...

  10. Prim最小生成树板子

    普里姆算法可以称为"加点法",每次迭代选择代价最小的边对应的点,加入到最小生成树中.算法从某一个顶点s开始,逐渐长大覆盖整个连通网的所有顶点. 邻接矩阵存图  时间复杂度O(n^2 ...