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. webstorm工具的字体、主题等相关设置

    Ctrl + /:单行注释Ctrl + Shift + /:块注释Ctrl + Alt + ↓:向下复制当前行Alt + ↑:向上移动Alt + ↓:向下移动Ctrl + D:删除当前行Ctrl + ...

  2. File System 定额(配额查询)

    不多说,在弄一个基于FileSytem/IndexedDB的小应用,目前处于基础开发阶段, 我们在使用FileSystem的时候无疑是需要知道浏览器的定额(配额的),怎么去查询,当然可以查询 Quot ...

  3. Android查缺补漏(View篇)--事件分发机制

    事件分发机制是Android中非常重要的一个知识点,同时也是难点,相信到目前为止很多Android开发者对事件分发机制并没有一个非常系统的认识,当然也包括博主个人在内.可能在平时的开发工作中我们并没有 ...

  4. CSS背景-background

    复合属性-background 如果同时设置了background-color和background-image时,背景颜色会被图片覆盖. background-image: 用作背景的图片,back ...

  5. XCode v9.6.2017.0830

    新生命团队基础框架X组件,包括网络.数据库.安全.多线程.反射.序列化.模版引擎.服务代理.远程过程调用等模块,包括Mvc后台魔方.超级码神工具.消息队列等子系统,支持Mono/Android/iOS ...

  6. 使用JPA中@Query 注解实现update 操作

    spring使用jpa进行update操作主要有两种方式: 1.调用保存实体的方法 1)保存一个实体:repository.save(T entity) 2)保存多个实体:repository.sav ...

  7. 爬取网页内容java

    下面介绍的这个方法只是作为抛砖引玉:根据网页URL就可以抓取其中的内容 /** * @title getHtmlResourceByUrl * @param url 网址 * @param encod ...

  8. Django_自带的admin管理页面

    Django的admin管理页面非常的好用,接下来就简单的说一下: 首先当你在pycharm中启动django服务端程序之后,在浏览器中输入地址就可以访问 当你输入默认的admin页面,,会弹出来下边 ...

  9. struts2(六)之ognl表达式与ActionContext、ValueStack

    前言 前面已经把struts2讲内容说了一半了,我写的很详细,希望对博友们有帮助. 一.OGNL表达式语言概述 1.1.OGNL表达式简介 百度上是这样说: OGNL是Object-Graph Nav ...

  10. Let the Balloon Rise(水)

    题目连接:http://acm.hdu.edu.cn/showproblem.php?pid=1004 Let the Balloon Rise Time Limit: 2000/1000 MS (J ...