22寄存器cpu工作原理包你明白_第1页
22寄存器cpu工作原理包你明白_第2页
22寄存器cpu工作原理包你明白_第3页
22寄存器cpu工作原理包你明白_第4页
22寄存器cpu工作原理包你明白_第5页
已阅读5页,还剩32页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、寄存器(cpu工作原理)1、一个典型的CPU由运算器、控制器、寄存器等器件组成,这些器 件靠内部总线相连。运算器信息处理 cpuJ控制器控制各种器件进行工作、寄存器信息存储内部总线 连接CPU内部各器件的总线 总线I外部总线连接CPU与外部各器件的总线区别:内部总线实现CPU内部各个器件之间的联系。外部总线实现CPU和主板上其它器件的联系。8086CPU有14个寄存器它们的名称为:AX、BX、CX、DX、SI、DI、SP、BP、IP、CS、SS、DS、ES、PSWo通用寄存器指针寄存器变址寄存器控制寄存器r段寄存器ipPSW8086CPU所有的寄存器都是16位的,可以存放两个字节,一个字节8位

2、。AX、BX、CX、DX通常用来存放一般性数据被称为通用寄存器。一个16位寄存器所能存储的数据的最大值为多少?因为每一位存放的数据是 0或1 ,那么最大的数值自然就是11111111 1111 1111(2),也就是 2八16-1 。2、通用寄存器(重点)8086上一代CPU中的寄存器都是8位的,为保证兼容性,这四个寄存器都可以分为两个独立的8位寄存器使用AX可以分为AH和AL ;BX可以分为BH和BL;CX可以分为CH和CL;DX可以分为DH和DL。、通用寄存若* 8086CPU的内部寄存器都是16位口 将AX、BX、CX、DX四个寄存器称为通用寄存器。 通用寄存器可分为两个独立的8位寄存器

3、来用口MOV AX, 1815 14 13 12 11 10 9 8 7 6 5 4 3 2 1 001001n()00l00000MOV AX, 2U000 IAX的低8位(0位7位)构成了 AL寄存器,高8位(8位15位)构成了 AH寄存器。AH和AL寄存器是可以独立使用的 8位寄存器,如果当成是8位寄 存器使用,那么他们就是独立的,没有任何关系。1111一个8位寄存器所能存储的数据的最大值是多少?二进制数值1111 ,也就是2八8-116位寄存器分成两个8位寄存器的使用情况0001 00000()()1()7 6 5 4 3 2076543210一个8位寄存器所能存储的数据的最大值是多少

4、?一个16位寄存器所能存储的最大值又是多少?寄存器甲的数据所表示的值1()(()0(AXAHAL3、字在寄存器中的存储二、字在寄存器申的存储字节(Byte):由8bit组成;可以存在8位寄存器中。字(word):由2Byte组成;这两个字节分别称为这 个字的高位字节和低位字节。注:一个16位寄存器中存放的数据即可以看成一个字 型警据,也可以看作两个字号型数据。例:口 i|o|o|o|o|o可看成一个字型数据20000存在AX中,也可看成两个 独立的字节型数据分为为78和32。三、几条汇编指令汇编指令控制CPU完成的操作用高级语言描述MOV AX, 18将18送入寄存器AXAX=18MOV AH

5、, 78将78送入寄存器AHAH=78ADD AX, 8将寄存器AX中的数值加上8AX=AX+8MOV AX, BX将寄存器BX中的数据送入AXAX=BXADD AX, BX将AX和BX中的数值相加,结 果保存在AX中AX=AX+BX注:在汇编语言中英文字母不区分大小字C设AX=BX=()OOOH,卜.列指令执行后,AX、BX中的数据为多少?程序段中的指令AX中的数据BX中的数据MOV AX, 4E20H4E20H0000HADD AX, 1406H6226H0000HMOV BX. 2000H6226H2000H注:当所保存的数据位数大于寄存器的位数时,高位的数据会丢失,称为数据溢出。MUV

6、226H8226Hadd AX, BX 044CH8226H8226H+8226H=1044CH AX=?程序段中的指令AX中的数据BX中的数据001AH001AH0000.110026M2640H4026H0040H4026HADD AXr 93H AX=? |ADI? AL; 91H 00C5H005 8 H4026H4026HMOV AX, 001AHMOV BX, 0026H注:当通用寄存器作为8位寄存器使用时,低8位和高8位相当于I两个独立的寄存器,它们之间没有直接关系,不能产生进位.ADD BH, ALMOV AH, 0注意:在进行数据传送或运算时,要注意指令的操作数的位数要匹配。

7、例:数据位数不匹配的指令MOV AX, BLBH, AXMOV J<f20000ADD /AL/MH4、物理地址的表示(重点)CPU访问内存单元时要给出内存单元的地址,所我们将这个唯一的地址称为物理地址。不同的CPU有不同的形成物理地址的方式。(1)16位结构的CPU8086内部为16位结构,它只能传送16位的地址,表现出的寻址能 力却只有64K。8086外部有20位地址总线,可传送20位地址,寻址能力为1M。那么,8086CPU如何用内部16位的数据,转换成20位的地址呢?8086CPU采用一种在内部用两个16位地址合成的方法来形成一个 20 位的物理地址。段地址+偏移地址->

8、地址加法器-> 20位的物理地址。地址加法器合成物理地址的方法:段地址X 16+偏移地址=物理地址。“段地址X 16”有一个更为常用的说法就是数据左移 4位。(二进制位)二进制的数据左移4位,意味着乘以2八4二16 。这样做的目的主要是为了弥补内部总线16位的缺陷而设计的。五、16位结构的CPU16位机: 运算器一次最多可以处理16位的数据 寄存器的最大宽度为16位 寄存器和运算器之间的通路为16位问题: 8086地址总线为20位 8086为16位结构解决: 8086用两个16位地址合成一个20位地址由两个16位地址如何形成20位地址(七)内存单元的物理地址=尾础地址+偏移地址加限定条件

9、:用两张只能写三位数 则表示为:200两种表示方法:2826; 2000+826。段地址x 16k偏移地址;递信息约定第个数x 10 +笫二个数1)CPU中的相关部件提 供段地址和偏移地址;六、8086CPU给出物理地址的方法2)段地址和偏移地址通过 3)地址加法器将两个16位地址 内部总线送入地址加法瑞;介成一个20位的物理地址;4)地址加法器将20位的物理地 址送输入输出控制电路:段地址偏移地址地址加法器5)摘入输出控制电路将20位物 理地址送上外部地址总线:6)地址总线籽20位物现地址送 入内存,、7址0其彳也部件入出制路输输控电内存物理地址二段地址X 16+偏移地址 8086CPU访问

10、内存单元工作过程访问地址为123c8H的内存单元时,地址加法器 的工作过程(数据皆为十六进制表示)地址加法器的工作过程段地址X 16,偏移地址形成20位物理地址段地址:XI6二左移4位(2进制)二左移I位(16进制)左移位数二进制十六进制十进制010B2H22x2°1100B4H -42x212IOOOB8H82X22310000B10H162x234100000B20H322x24个数据的二进制形式左移N位,相当于该数据乘以2匕加法器左移4位相当于乘以24 (16)5、关于段空间内存没有分段,段的划分来自于 CPU,由于8086CPU用“(段地址X 16) +偏移地址二物理地址”的

11、方式给出内存单元的物理地址,使得我们可以用分段的方式来管理内存。以后,在编程时可以根据需要,将若干地址连续的内存单元看作一个段,用段地址X 16定位段的起始地址(基础地址),用偏移地址定位段中 的内存单元。(1)段地址X 16必然是16的倍数,所以一个段的起始地址也一定是16的倍数;(2)偏移地址为16位,16位地址的寻址能力为 64K,所以一个段的长度最大为64K。CPU可以用不同的段地址和偏移地址形成同一个物理地址。如果给定一个段地址,仅通过变化偏移地址来进行寻址,最多可以定八、段的概念两点注意;1 段地址X 16必然是16的倍数,所以一个段的起始地 址必然是16的倍数(即:XXXXOH)

12、2 .偏移地址为16位,所以一个段的最大长度为64KB。段是我们为管理内存而引入的一个虚拟的概念, 我们可以将内存地址连续、起始地址为16的倍数的一 组内存单元看作一个段来管理,但事实上,内存并没 有被真正划分成段。思考:1、观察下面的地址:物理地址段地址偏移地址21F60H2000H1F60H2100H0F60H21F0H0060H21F6H0000H1FOOH2F60HCPU可以用不同的段地址和偏移地址形成同一个物理地址2、如果给定一个段地址,仅通过变化偏移地址来进 行寻址,最多可定位多少内存单元?6、地址的描述在8086PC机中,存储单元的地址用两个元素来描述。即段地址和偏移地址。“数据

13、在21F60H内存单元中。”对于8086PC机的两种描述:(a)数据存在内存2000:1F60单元中;(b)数据存在内存的2000段中的1F60H单元中。可根据需要,将地址连续、起始地址为16的倍数的一组内存单元定义为一个段。7、段寄存器就是提供段地址的。8086CPU 有 4 个段寄存器: CS、DS、SS、ES。CS和IP是8086CPU中最关键的寄存器,它们指示了 CPU当前要读 取指令的地址。CS为代码段寄存器,IP为指令指针寄存器。在8086CPU加电启动或复位后( 即CPU刚开始工作时)CS和IP被设置为 CS=FFFFH, IP=0000H。即在8086PC机刚启动时,CPU从内

14、存FFFF0H单元中读取指令执行。FFFF0H单元中的指令是8086PC机开机后执行的第一条指令。九、段寄存器在CPU中提供段地址的寄存器符号名称作用配合寄存器CS代码段提供(程序、指令)段地址IPDS数据段用于存放数据的存储器段的起始地址SS堆栈段定义堆栈的存储区SPES附加段存放附加存储器段的段地址十、CS和IPCS 代码段寄存器:提供当前要执行的指令的段地址。 IP 一指令指针寄存器:指向当前要执行的指令的偏移 地址。由CS和IP分别提供-个16位的段地址和偏移地址, 经地址加法器合成一个20位的物理地址,该地址为当前 要执行的指令所在的位置(CS : IP) oCPU地址其他部件 输入

15、输出执行控制器控制电路CPU地址加法AXHU23200030003若当前CPU中的状态为:CS=2000, IP=0000地址Bg 200032000420006OS ')0()7200082000Atip:/B8 2000()231二()()(”20002mov bx.0003H» movuxbx20003B«230输入输出数执行控制器控制电路内存H| 20001 mi 20002 B 200032000420005200062000720008200092000Attp:/20000mov ax<0123IImov bx.。3H地址加法协1例03 |000

16、6200V6地址21)0()() 23j 20001 20002movax,0123H21)003 卜2000420005bx,0003H8920006其他部件指令缓冲器一总线BB03 00输入输出数据BB 03 0(行控制器控制电路2()006BB 03 0(;()1总线D82000720008200092000Attp:/» mov ax,bxCPU内存20000地址加法镯2320001>-mov oxOlZSH0003101200020003 20()08BB0320(X)3岸 mov bx.0003H89 D8指令缓冲器S9DS地随2000omov ax. bx2000

17、420005200082000889 D801执行控制器输入输出控制电路数据总线200092000ACPU地址加“Axfoooqx|ooo32000A000A地址总线200002000120002200032000420005200062000720008 卜2000A |illp:niovax0123Hmov bx JI003Hmov ax, bx指令缓冲器()1 D82000A01 1)801 D8输入输出执行控制器控制电路mov ax.mov bx,0003H地址1200012000220003200042000520006其他部件IP+N址加法器由CS:IP指向CPU将要执行的指令所在

18、的物理地址,取到指令后,IP会自动增加N指向下一条指 令所在的位置;从而使计算机能够自动连续的执行一个完整的程序。(1)从CS:IP指向内存单元读取指令,读取的指令进入指令缓冲器;(2) IP=IP+N,从而指向下一条指令:(3)执行和处理取到的指令,重复步骤(D(1)在8086CPU加电启动或复位后,CS的值为FFFFH, 而IP的值为0000H,所以CPU刚开始工作时,执行在 内存单元地址为FFFF:OOOO处的指令(2)既然指令和数据都是二进制的,那么CPU如何识别 哪些二进制数据是指令,哪些是纯数据呢?现在我们可以说,如果是CS:IP指向的内存单元处的 内容,那么可以说它是指令8、修改

19、 CS, IPmov指令不能用于设置 CS、IP的值,8086CPU没有提供这样的功能。8086CPU为CS、IP提供了另外的指令来改变它们的值:转移指令JMP段地址:偏移地址JMP 2AE3:3功能:用指令中给出的段地址修改 CS,偏移地址修改IP。CS =2AE3H , IP = 0003H 。仅修改IP的内容:jmp 某一合法寄存器jmp ax (类似于 mov IP,ax )功能:用寄存器中的值修改IP8086机中,任意时刻,CPU将CS:IP指向的内容当作指令执行。'修改cs、IP的指令,若想同时修改cs、TP的内容,可用jmp 段地址:偏移地址例:jmp 2AE3:3贝UC

20、S=2AE3H, IP=0003H若只修改IP的内容,可用注意:CS和IP不充许直接赋值9、关于debug指令(Win7没有这个指令,XP才有)R命令查看、改变CPU寄存器的内容;D命令查看内存中的内容;E命令改写内存中的内容;U命令将内存中的机器指令翻译成汇编指令;T命令执行一条机器指令;A命令以汇编指令的格式在内存中写入一条机器指令。CPU寄存器详解组件计算机是一种数据处理设备,它由CPUf口内存以及外部设备组成。 CPlft责数据处理,内存负责存储,外部设备负责数据的输入和输出, 它们之间通过总线连接在一起。CPUrt部主要由控制器、运算器和寄 存器组成。控制器负责指令的读取和调度,运算

21、器负责指令的运算执 行,寄存器负责数据的存储,它们之间通过CPLrt的总线连接在一起。 每个外部设备(例如:显示器、硬盘、键盘、鼠标、网卡等等)则是 由外设控制器、I/O端口、和输入输出硬件组成。外设控制器负责设 备的控制和操作,I/O端口负责数据的临时存储,输入输出硬件则负 责具体的输入输出,它们间也通过外部设备内的总线连接在一起。组件化的硬件体系上面的计算机系统结构图中我们可以看出硬件系统的这种组件化的设计思路总是贯彻到各个环节。在这套设计思想(冯。诺依曼体 系架构)里面,总是有一部分负责控制、一部分负责执行、一部分则 负责存储,它之间进行交互以及接口通信则总是通过总线来完成。这种设计思路

22、一样的可以应用在我们的软件设计体系里面:组件和组件 之间通信通过事件的方式来进行解耦处理, 而一个组件内部同样也需 要明确好各个部分的职责(一部分负责调度控制、一部分负责执行实 现、一部分负责数据存储)。缓存一个完整的CP原统里面有控制部件、运算部件还有寄存器部件。 中寄存器部件的作用就是进行数据的临时存储。 既然有内存作为数据 存储的场所,那么为什么还要有寄存器呢?答案就是速度和成本。我 们知道CP阴运算速度是非常快的,如果把运算的数据都放到内存里 面的话那将大大降低整个系统的性能。解决的办法是在CPLrt部开辟 一小块临时存储区域,并在进行运算时先将数据从内存复制到这一小 块临时存储区域中

23、,运算时就在这一小快临时存储区域内进行。 我们 称这一小块临时存储区域为寄存器。因为寄存器和运算器以及控制器 是非常紧密的联系在一起的,它们的频率一致,所以运算时就不会因 为数据的来回传输以及各设备之间的频率差异导致系统性能的整体下降。你可能又会问为什么不把整个内存都集成进 CPL去呢?答案 其实还是成本问题!因为CPI®度很快,相应的寄存器也需要存取很快,二者速度上 要匹配,所以这些寄存器的制作难度大,选材精,而且是集成到芯片 内部,所价格高。而内存的成本则相对低廉,而且从工艺上来说,我 们不可能在CPU3部集成大量的存储单元。运算的问题通过寄存器解决了,但是还存在一个问题:我们知

24、道 程序在运行时是要将所有可执行的二进制指令代码都装载到内存里 面去,CP唬执行一条指令前都需要从内存中将指令读取到 CPLft并 执行。如果按这样每次都从内存读取一条指令来依次执行的话,那还是存在着CPU和内存之间的处理瓶颈问题,从而造成整体性能的下 降。这个问题怎么解决呢?答案就是高速缓存。 其实在CPU3部不仅 有为解决运算问题而设计的寄存器,还集成了 一个部分高速缓存存储 区域。高度缓存的制造成本要比寄存器低,但是比内存的制造成本高, 容量要比寄存器大,但是比内存的容量小很多。虽然没有寄存器和运 算器之间的距离那么紧密,但是要比内存到运算器之间的距离要近很 多。一般情况下CPU内的高速

25、缓存可能只有几 KB或者几十KB那么 大。正是通过高速缓存的引入,当程序在运行时,就可以预先将部分 在内存中要执行的指令代码以及数据复制到高速缓存中去,而CPUIU不再每次都从内存中读取指令而是直接从高速缓存依次读取指令来 执行,从而加快了整体的速度。当然要预读取哪块内存区域的指令和数据到缓存上以及怎么去读取这些工作都交给操作系统去调度完成, 这里面的算法和逻辑也非常的复杂,大家可以通过学习操作系统相关 的课程去了解,这里就不再展开了。可以看出高速缓存的作用解决了 不同速度设备之间的数据传递问题。在实际中CPLft部可能不止设有 一级高速缓存,有可能会配备两级到三级的高速缓存, 越高级的高速

26、缓存速度越快,容量越低,而越低级的高度缓存则速度越慢,但是容 量越大。比如iPhoneX上的搭载的arm处理器A11里面除了固有的 37个通用寄存器外,L1级缓存的容量是64KB, L2级缓存的容量达 到了 8M(这么大的二级缓存,都有可能在你的程序代码少时可以一次 性将代码读到缓存中去运行),没有配备三级缓存。底本更注的/4,存储的层次结构我们知道在软件设计上有一个所谓的空间换时间的概念,就是当 两个对象之间进行交互时因为二者处理速度并不一致时,我们就需要 引入缓存来解决读写不一致的问题。比如文件读写或者socket通信时,因为IO设备的处理速度很慢,所以在进行文件读写以及socket通信时总是要将读出或者写入的部分数据先保存到一个缓存中,然后再统一的执行读出和写入操作。可以看出无论是在硬件层面上还是在软件层面上,当两个组件之 间因为速度问题不能进行同步交互时,就可以借助缓存技术来弥补这 种不平衡的状况指令中的寄存器CPU执行的每条指令都由操作码和操作数组成,简单理解就是要 对谁(操作数)做什么(操作码)。在 CPLft部要运算的数据总是放 在寄存器中,而实际的数据则有可能是放在内存或者是IO端口中。因此

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论