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. StringMVC @RequestParam属性

    1.jsp: <a href="springmvc/testRequestParam?username=allen&age=sss">test RequsetP ...

  2. ssh整合开发

    ssh整合思想 ssh整合 第一步:导入ssh相关jar包 第二步:搭建struts环境   (1)创建 action  struts.xml配置文件, 配置action struts.xml约束 & ...

  3. Hyperledger Fabric 本地运行的简单示例

    环境: Ubuntu 16.04 go 1.7.4 版本: Fabric v1.0.0-alpha 本文主要目的就是让大家体验以下Fabric网络环境搭建的具体过程,不基于集成化脚本手动搭建. 一.编 ...

  4. QTableView表格自动拉伸

    QTableView有四个关于自动拉伸的函数: void resizeColumnToContents(int column); void resizeColumnsToContens(); void ...

  5. append和extend 的区别

    l = ["zhy",666] l.extend(["edit","sdd"]) print(l) #['zhy', 666, 'edit' ...

  6. 【转载】Linux cgroup资源隔离各个击破之 - io隔离

    Linux Cgroup blkio子系统的用法.   blkio子系统支持的两种IO隔离策略 .1. (Completely Fair Queuing 完全公平队列)cfq io调度策略,支持按权重 ...

  7. .NET Core:使用ImageSharp跨平台处理图像

    一.简述 ImageSharp是一个新的跨平台2D图形API,旨在处理图像而不使用System.Drawing. 二.安装 目前ImageSharp还是处于alpha版本,所以我们需要在nuget中添 ...

  8. js时间戳与日期格式的相互转换

    下面总结一下js中时间戳与日期格式的相互转换: 1. 将时间戳转换成日期格式: function timestampToTime(timestamp) { var date = new Date(ti ...

  9. 【WC2013】糖果公园

    Candyland 有一座糖果公园,公园里不仅有美丽的风景.好玩的游乐项目,还有许多免费糖果的发放点,这引来了许多贪吃的小朋友来糖果公园玩. 糖果公园的结构十分奇特,它由 nn 个游览点构成,每个游览 ...

  10. 2017广东工业大学程序设计竞赛决赛 题解&源码(A,数学解方程,B,贪心博弈,C,递归,D,水,E,贪心,面试题,F,贪心,枚举,LCA,G,dp,记忆化搜索,H,思维题)

    心得: 这比赛真的是不要不要的,pending了一下午,也不知道对错,直接做过去就是了,也没有管太多! Problem A: 两只老虎 Description 来,我们先来放松下,听听儿歌,一起“唱” ...