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. 最新swift4.0 图片进行尺寸大小及体积压缩

    p.p1 { margin: 0.0px 0.0px 0.0px 0.0px; font: 15.0px Menlo; color: #4dbf56; background-color: #282b3 ...

  2. 如何在 iOS 真机运行 Appium

    使用 gui 启动的 appium 1.2.2 也会有这个问题,所以你要把 deviceconsole 复制到 /Applications/Appium.app/Contents/Resources/ ...

  3. Redis 部署主从哨兵 C#使用,实现自动获取redis缓存 实例1

    源码示例下载链接: https://pan.baidu.com/s/1eTA63T4 密码: un96 实现目标:windows 下安装 一台master服务 一台salve redis服务器 并且哨 ...

  4. HTTP2.0和QUIC

    最近看到腾讯云支持QUIC的文章,突然意识到还没有好好认识HTTP2.QUIC,而要认识HTTP2,就需要从HTTP1.0开始讲起,才能清楚HTTP的发展历程. HTTP1.x HTTP(HyperT ...

  5. Linux经常使用的文件传输的几种方式

    Linux经常使用的文件传输的几种方式 1.终端新建stfp协议连接 或者命令方式: sftp -P22 root@192.168.11.100 端口可以不用填写,默认是22,端口的P是大写. 将本地 ...

  6. 关于setTimeout的面试题

    于地铁上看了一篇帖子,关于setTimeout的面试题,觉得见得多,记录,以学习之. 我们都知道,这样的一个例子: for ( var i = 0;i<5; i++) { console.log ...

  7. webpack基础打包安装分享

    一.创建webpack-first文件夹作为站点,创建app文件夹存放js原始模块(main.js 和 Greeter.js) 创建 public文件夹存放index.html和打包后的bundle. ...

  8. conda虚拟环境实践

    1.查看本地创建了那些python版本 which python whereis python which主要用来查找可直接执行的命令,可以查找别名.whereis比which的搜索范围大了一些,同时 ...

  9. HyperLedger Fabric Introduction——区块链超级账本介绍

    介绍 HyperLedger Fabric是一个基于模块化架构的分布式账本解决方案平台,它拥有深度加密.便捷扩展.部署灵活及可插拔等特性.它设计之初的目的是支持不同组件的可插拔实现,并适应整个经济生态 ...

  10. 关于java解析xml文件出现的问题

    DOM解析xml文件 问题1:导入javax.xml.parsers.DocumentBuilderFactory出现问题,如图: 解决办法是:由于创建工程时有个默认的jre,重新创建工程改掉就解决了 ...