cpu寄存器
cpu中寄存器的作用
cpu中寄存器的作用
CPU中寄存器是计算机中的一种重要的储存设备,作用十分重要。
寄存器是CPU中储存数据的最快和最小的地方。
寄存器能够快速存取
数据,它可以在CPU内部寻找信息,不必向主存储器请求数据。
寄存
器可以储存程序中的数据和地址,能够快速地将数据搬移到其他地方。
具体来说,寄存器包括多个功能寄存器,如程序计数器、堆栈指针、
标志寄存器和通用用途寄存器。
首先,寄存器可以存储计算机指令的地址。
当程序执行时,计算
机需要根据指令的地址进行查找,获取指令以便执行。
这样,寄存器
能够快速准确的定位到指令的位置,提高了计算机的执行效率。
其次,寄存器能够存储临时变量和中间变量。
在程序执行过程中,经常需要定义临时变量和中间变量来存储数据,寄存器能够快速的存
储和访问这些临时变量和中间变量,提高程序的运行速度。
例如,在
进行高精度计算时,采用的是将数据分为若干个整数分别存放,这些
整数可以在寄存器中进行操作,从而更加快速和高效的完成计算。
除此之外,寄存器还能够存储CPU的状态和标志,如控制标志、
条件标志等。
CPU利用这些状态和标志来决定下一条指令的执行方式,比如分支、跳转等操作。
这样,寄存器在程序控制流程中起到了至关
重要的作用。
综上所述,寄存器在CPU中的作用十分重要。
它能够快速存取数据,提高计算机的执行效率,同时还能存储临时变量和中间变量,控
制程序的控制流程。
因此,在编写程序时,应该充分利用寄存器的优势,合理使用寄存器资源,提高程序的运行效率。
CPU寄存器
3 I
中断屏蔽位—当设置中断屏蔽,所有可屏蔽 的 CPU中断将被屏蔽.当中断屏蔽被清除时 使能。当产生一个CPU中断,中断屏蔽被保 存到堆栈,但是在中断服务子程序第一条指令 执行前自动置1。这确保了CLI或TAP之后的 下一条指令总会被执行,而不会出现如果I置 1而发生插入中断的可能性。 0 中断使能 1 中断屏蔽
条件代码寄存器(CCR) 条件代码寄存器 8位条件代码寄存器存放中断屏蔽位(I)和5个指出刚执行指令 结果的标志。第5和第6位永远设置为1。如图:
0 C
进/借标志—当一个加法操作产生一个对第 7位累加需要进位或者一个减法操作要求一 个借位,则置本位为1。一些指令,如位测 试和分支,移位和旋转也会影响进/借标志。 0 第7位没有产生进/位 1 第7位产生进/位
4 H
半进位标志—当在累加器第3位和第4位之间在不带 进位加法(ADD)或者带进位加(ADC)操作时发生半进 位,则CPU置该标志为1。二进制编码的十进制 (BCD)运算将用到半进位标志。另外DAA指令也会 根据条件代码位H和C的状态,自动加一个修正值到 先前的ADD或ADC的BCD运算,以修正结果为一个 正确的BCD值。 0 第3位和第4位之间没有进位 1 第3位和第4位之间有进位
堆栈指针(SP) 堆栈指针 16位地址指针寄存器指向下一个有效的堆栈位置。堆栈可以放 置在包含RAM的 64 Kbyte地址空间的任意位置,其大小可以为 任何RAM中的有效值。堆栈用来自动保存子程序调用的返回地 址、中断中CPU寄存器和局部变量的返回地址。AIS(立即加堆 栈指针,堆栈处理指令)指令对SP加上一个8位有符号立即数。 这经常用于对堆栈中的局部变量分配和取消分配空间。
HCS08 CPU的特点包括:
CPU状态和控制寄存器
’C54x提供三个16位寄存器来作为CPU状态和 控制寄存器,它们分别为: 状态寄存器0(ST0) 状态寄存器1(ST1) 工作方式状态寄存器(PMST)
ST0和ST1主要包含各种工作条件和工作方式
的状态;
PMST包含存储器的设置状态和其他控制信息。
1.状态寄存器0(ST0)
CPL:直接寻址编辑方式标志位; 用来指示直接寻址选用何种指针。 CPL=0 选用数据页指针DP的直接寻址; CPL=1 选用堆栈指针SP的直接寻址。
INTM:中断方式控制位; 用于屏蔽或开放所有可屏蔽中断。 INTM=0 开放全部可屏蔽中断; INTM=1 禁止所有可屏蔽中断。 0:保留位,未被使用,总是读为0。
C16:双16位/双精度算术运算方式控制位; 用来决定ALU的算术运算方式。 C16=0 ALU工作在双精度算术运算方式; C16=1 ALU工作在双16位算术运算方式。
ASM:累加器移位方式控制位。 为某些具有移位操作的指令设定一个从16~15范围内的移位值。
15
14
13 XF
12
11
10 0
9
3.工作方式状态寄存器PMST
主要设定和控制处理器的工作方式和存储器的 配置,反映处理器的工作状态。
15~7 IPTR 6 5 4 AVIS 3 2 1 0 SST
MP/MC OVLY
DROM CLKOFF SMUL
中 断 向 量 指 针
CPU 工 作 方 式 选 择 位
RAM 重 复 占 位 标 志
15 —13 12 11 10 9 8 —— 0
ST0: ARP
TC TC
C
OVA
OVB
DP
C:进位标志位。 用来保存ALU加减运算时所产生的进/借位。
CPU的内部寄存器
指令指针寄存器(EIP)
80486的地址线是32条,所以其指令指针EIP是32位寄存器,用于存放下一条待预取指令相对于代码段基址的偏移量。
标志寄存器(EFLAGS)
32 位标志寄存其中包含三种状态:状态标志(S)、控制标志(C)和系统标志(X)。其中,状态标志用于报告算术/逻辑运算指令执行后的状态;控制标志仅包含 一个标志DF,用于控制串操作指令的地址改变方向;系统标志用于控制I/O、屏蔽中断、调试、任务转换和控制保护模式与虚拟8086方式的转换。
虚拟8086模式标志VM(位17):在80386/80486的保护方式中,有VM位提供一种虚拟8086方式。即当 80386/80466处于保护方式时,如果VM位置位,80386/80486将转为虚拟8086方式。VM位只能用两种方式来设置:在保护方式下,由 最高特权级(0级)的代码段的IREF指令来设置;或者由在任何特权级下的任务转换来设置。VM位不受POPF指令的影响,PUSHF指令总是使该位清 零。在中断处理过程中被压入伙在任务切换期间被保存的EFLAGS的映像中的VM位将包含一个1,条件是被中断的码正作为虚拟的8086任务而被执行。
对 准检查标志AC(位18):该位仅对80486有效。当AC=1,且CR0的AM位也为1时,80486进行字、双字或四字的对准检查。若处理器发现在访 问内存时的操作数未按边界对准(所谓对准,是指访问字操作数是从偶地址开始,访问双字的操作数从4的整数倍地址开始,访问四字的操作数从8的整数倍地址开 始),则产生定位故障,从而引入一个新的中断,称异常中断17。不过此定位故障仅发生在用户方式的特权级3,而不会发生在特权级0、1、2种。AC=0 时,不进行定位检查,与80386工作兼容。
辅助进位标志AF(位4):若运算结果导致低4位向第5位进位或借位则AF=1,否则AF=0。该标志位主要用于BCD码运算。
寄存器CPU工作原理
考虑:CPU如何产生20位的物理地址呢?
整理课件
3
16位结构的CPU
8位机:8080,8085 16位机:8086 32位机:80386,80486 N位结构的含义:
运算器一次最多可以处理N位数据; 寄存器的最大宽度为N位 寄存器和运算器之间的通路是N位
IP:指令指针寄存器 CS和IP就指示了CPU当前要读取指令的地
址 设8086机中CS中内容为M,IP中内容为N,
则8086CPU将从内存M*16+N单元开始, 读取一条指令来执行 我们又可以表示成CS:IP
整理课件
12
8086CPU的工作过程
初始状态
整理课件
13
8086CPU的工作过程(续)
了解CPU的组成; 掌握各种寄存器,尤其是通用寄存器; 理解字在寄存器中的存储; 掌握几条简单的汇编指令; 掌握8086CPU的物理地址的形成; 了解段寄存器,掌握CS和IP的合用; 掌握jmp指令; 熟悉Debug调试工具;
整理课件
29
作业
检测点2.2,2.3
整理课件
30
Debug命令
整理课件
31
D命令——Display
使用D命令查看内存中的内容
格式1:d 段地址:偏移地址
• 功能:列出从指定内存单元开始的128个内存单元 的内容
格式2:d 段地址:起始偏址 结尾偏址
使用多种不同的段地址和偏移地址来查看 同一个物理地址的内容
整理课件
32
E命令——Enter
改写内存中的内容 格式:e 起始地址 数据 数据 数据……… 或者可以用E命令提问的方式来逐个修改从
CPU寄存器详解
CPU寄存器详解组件计算机是一种数据处理设备,它由CPU和内存以及外部设备组成。
CPU 负责数据处理,内存负责存储,外部设备负责数据的输入和输出,它们之间通过总线连接在一起。
CPU内部主要由控制器、运算器和寄存器组成。
控制器负责指令的读取和调度,运算器负责指令的运算执行,寄存器负责数据的存储,它们之间通过CPU内的总线连接在一起。
每个外部设备(例如:显示器、硬盘、键盘、鼠标、网卡等等)则是由外设控制器、I/O端口、和输入输出硬件组成。
外设控制器负责设备的控制和操作,I/O端口负责数据的临时存储,输入输出硬件则负责具体的输入输出,它们间也通过外部设备内的总线连接在一起。
组件化的硬件体系上面的计算机系统结构图中我们可以看出硬件系统的这种组件化的设计思路总是贯彻到各个环节。
在这套设计思想(冯。
诺依曼体系架构)里面,总是有一部分负责控制、一部分负责执行、一部分则负责存储,它之间进行交互以及接口通信则总是通过总线来完成。
这种设计思路一样的可以应用在我们的软件设计体系里面:组件和组件之间通信通过事件的方式来进行解耦处理,而一个组件内部同样也需要明确好各个部分的职责(一部分负责调度控制、一部分负责执行实现、一部分负责数据存储)。
缓存一个完整的CPU系统里面有控制部件、运算部件还有寄存器部件。
中寄存器部件的作用就是进行数据的临时存储。
既然有内存作为数据存储的场所,那么为什么还要有寄存器呢?答案就是速度和成本。
我们知道CPU的运算速度是非常快的,如果把运算的数据都放到内存里面的话那将大大降低整个系统的性能。
解决的办法是在CPU内部开辟一小块临时存储区域,并在进行运算时先将数据从内存复制到这一小块临时存储区域中,运算时就在这一小快临时存储区域内进行。
我们称这一小块临时存储区域为寄存器。
因为寄存器和运算器以及控制器是非常紧密的联系在一起的,它们的频率一致,所以运算时就不会因为数据的来回传输以及各设备之间的频率差异导致系统性能的整体下降。
CPU寄存器
1、数据寄存器 ----(4个数据寄存器(EAX、EBX、ECX和EDX)数据寄存器主要用来保存操作数和运算结果等信息,从而节省读取操作数所需占用总线和访问存储器的时间。
32位CPU有4个32位的通用寄存器EAX、EBX、ECX和EDX。
对低16位数据的存取,不会影响高16位的数据。
这些低16位寄存器分别命名为:AX、BX、CX和DX,它和先前的CPU中的寄存器相一致。
4个16位寄存器又可分割成8个独立的8位寄存器(AX:AH-AL、BX:BH-BL、CX:CH-CL、DX:DH-DL),每个寄存器都有自己的名称,可独立存取。
程序员可利用数据寄存器的这种”可分可合”的特性,灵活地处理字/字节的信息。
寄存器AX和AL通常称为累加器(Accumulator),用累加器进行的操作可能需要更少时间。
累加器可用于乘、除、输入/输出等操作,它们的使用频率很高;寄存器BX称为基地址寄存器(Base Register)。
它可作为存储器指针来使用;寄存器CX称为计数寄存器(Count Register)。
在循环和字符串操作时,要用它来控制循环次数;在位操作中,当移多位时,要用CL来指明移位的位数;寄存器DX称为数据寄存器(Data Register)。
在进行乘、除运算时,它可作为默认的操作数参与运算,也可用于存放I/O的端口地址。
在16位CPU中,AX、BX、CX和DX不能作为基址和变址寄存器来存放存储单元的地址,但在32位CPU中,其32位寄存器EAX、EBX、ECX和EDX不仅可传送数据、暂存数据保存算术逻辑运算结果,而且也可作为指针寄存器,所以,这些32位寄存器更具有通用性。
2、变址寄存器------2个变址寄存器(ESI和EDI)32位CPU有2个32位通用寄存器ESI和EDI。
其低16位对应先前CPU中的SI和DI,对低16位数据的存取,不影响高16位的数据。
寄存器ESI、EDI、SI和DI称为变址寄存器(Index Register),它们主要用于存放存储单元在段内的偏移量,用它们可实现多种存储器操作数的寻址方式,为以不同的地址形式访问存储单元提供方便。
32位CPU所含有的寄存器
32位CPU所含有的寄存器本篇文章主要介绍了"32位CPU所含有的寄存器",主要涉及到32位CPU所含有的寄存器方面的内容,对于32位CPU所含有的寄存器感兴趣的同学可以参考一下。
32位CPU所含有的寄存器有:4个数据寄存器(EAX、EBX、ECX 和EDX)2个变址和指针寄存器(ESI和EDI) 2个指针寄存器(ESP和EBP)6个段寄存器(ES、CS、SS、DS、FS和GS)1个指令指针寄存器(EIP) 1个标志寄存器(EFlags)1、数据寄存器数据寄存器主要用来保存操作数和运算结果等信息,从而节省读取操作数所需占用总线和访问存储器的时间。
32位CPU有4个32位的通用寄存器EAX、EBX、ECX和EDX。
对低16位数据的存取,不会影响高16位的数据。
这些低16位寄存器分别命名为:AX、BX、CX和DX,它和先前的CPU中的寄存器相一致。
4个16位寄存器又可分割成8个独立的8位寄存器(AX:AH-AL、BX:BH-BL、CX:CH-CL、DX:DH-DL),每个寄存器都有自己的名称,可独立存取。
程序员可利用数据寄存器的这种“可分可合”的特性,灵活地处理字/字节的信息。
寄存器AX和AL通常称为累加器(Accumulator),用累加器进行的操作可能需要更少时间。
累加器可用于乘、除、输入/输出等操作,它们的使用频率很高;寄存器BX称为基地址寄存器(Base Register)。
它可作为存储器指针来使用;寄存器CX称为计数寄存器(Count Register)。
在循环和字符串操作时,要用它来控制循环次数;在位操作中,当移多位时,要用CL来指明移位的位数;寄存器DX称为数据寄存器(Data Register)。
在进行乘、除运算时,它可作为默认的操作数参与运算,也可用于存放I/O 的端口地址。
在16位CPU中,AX、BX、CX和DX不能作为基址和变址寄存器来存放存储单元的地址,但在32位CPU中,其32位寄存器EAX、EBX、ECX和EDX不仅可传送数据、暂存数据保存算术逻辑运算结果,而且也可作为指针寄存器,所以,这些32位寄存器更具有通用性。
ch02_寄存器(CPU工作原理)
Email:info@
QQ:1613839994
10
2.6 Debug
3
2.2通用寄存器 • 8086CPU有14个寄存器 它们的名称为:
– AX、BX、CX、DX、SI、DI、SP、BP、IP、CS、SS、 DS、ES、PSW – AX、BX、CX、DX 通常用来存放一般性数据被称为通用 寄存器。 – 寄存器为16位 存储一个字, 字的高字节存 在高8位中,低 字节存在低8位 中
Email:info@
QQ:1613839994
11
谢谢观看
红萌网出品
• Debug是DOS、Windows都提供的实模式(8086方式)程序 的调试工具,使用它可以查看CPU各种寄存器的内容、内存 的情况和在机器码级跟踪程序的运行
•
Debug常用功能
– R查看、改变CPU寄存器的内容 – D查看内存的内容 – E改写内存的内容 – U将内存中机器指令翻译成汇编指令 – T执行一条机器指令 – A以汇编指令的格式在内存中写入一条机器指令
Email:info@
QQ:1613839994
5
2.3物理地址
Email:info@
QQ:1613839994
6
2.4段寄存器
• 段寄存器就是提供段地址的,8086CPU有4个段寄存 器:CS、DS、SS、ES ,当8086CPU要访问内存时, 由这4个段寄存器提供内存单元的段地址。 • CS和IP是8086CPU中最关键的寄存器,它们指示了 CPU当前要读取指令的地址。
CPU中的主要寄存器
CPU中的主要寄存器1.数据缓冲寄存器(DR)暂时存放由内存独处的一条指令或一个数据字;反之,当向内存存入一条指令或一个数据字时,也暂时将它们存放在DR中。
2.指令寄存器(IR)用来保存当前正在执行的一条指令。
当执行一条指令时,先把它从内存取到缓冲寄存器中,然后再传送至指令寄存器。
指令划分为操作码和地址码字段,由二进制数字组成。
为了执行任何给定的指令,必须对操作码进行测试以便识别所要求的操作。
一个叫做指令译码器的部件就是做这项工作的。
指令寄存器中操作码字段的输出就是指令译码器的输入。
操作码一经译码后,即可向操作控制器发出具体操作的特定信号。
3.程序计数器(PC)通常又称为指令计数器。
通常情况下都是PC=PC+1。
说简单点就是用来控制地址,以便程序顺序执行。
4.地址寄存器(AR)用来保存当前CPU所访问的内存单元的地址。
由于在内存和CPU之间存在着操作速度上的差别,所以必须使用地址寄存器来保持地址信息,直到内存的读/写操作完成为止。
5.累加寄存器(AC)累加寄存器AC通常简称为累加器,它是一个通用寄存器。
其功能是:当运算器的算术逻辑单元ALU执行算术逻辑单元时,为ALU提供一个工作区。
例如,在执行一个加法运算前,先将一个操作数暂时存放在AC中,再从内存中取出另一个操作数,然后同AC的内容相加,所得的结果送回AC中,而AC中原有的内容随即被破坏。
所以,累加寄存器是暂时存放ALU运算的结果信息。
运算器中至少要有一个累加寄存器。
目前多达16,32,甚至更多。
6.状态条件寄存器(PSW)状态条件寄存器保存由算数指令和逻辑指令运行或测试的结果建立的各种条件码内容,如算数结果进位标志C,运算结果溢出标志V,运算结果为零标志Z,运算结果为负标志N,等等。
这些标志位通常分别由1位触发器保存。
除此之外还保存中断和系统工作状态等信息,以便使CPU和系统能及时了解机器运行状态和程序运行状态。
因此,状态条件寄存器是一个由各种状态条件标志拼凑而成的寄存器。
计算机存储器的层次结构与功能
计算机存储器的层次结构与功能计算机存储器是计算机中非常重要的组成部分之一,负责存储和提供数据和指令。
存储器的设计涉及到不同层次的结构和功能,这些层次相互协作,共同完成数据的存储和访问任务。
本文将就计算机存储器的层次结构与功能展开讨论。
一、存储器的层次结构计算机存储器的层次结构是按照访问速度和容量大小进行划分的,分为CPU寄存器、高速缓存、主存储器和辅助存储器四个层次。
1. CPU寄存器CPU寄存器是存储在CPU内部的最快速的存储器,用于保存CPU 当前执行的指令和数据。
由于寄存器靠近CPU,其访问速度极快,但容量非常有限,通常只能存储少量的数据。
寄存器不需要通过地址来访问,而是通过寄存器名直接访问。
2. 高速缓存高速缓存(Cache)是位于CPU和主存储器之间的一层存储器,用于解决CPU和主存储器之间速度不匹配的问题。
高速缓存采用了局部性原理,将CPU频繁访问的数据和指令缓存到离CPU更近的位置,以减少访问主存储器的次数,从而提高系统的性能。
3. 主存储器主存储器(Main Memory)是计算机中存储数据和程序的主要设备,是CPU进行读写操作的对象。
主存储器的容量较大,但速度相对较慢。
主存储器通常采用随机访问存储器(RAM)技术实现,它能够以任意顺序访问存储的数据,并且具有易失性的特点,即断电后数据会丢失。
4. 辅助存储器辅助存储器(Auxiliary Storage)是计算机中容量最大、速度最慢、价格最便宜的存储器。
辅助存储器主要用于长期存储数据和程序,常见的辅助存储设备包括硬盘、光盘和磁带等。
辅助存储器具有持久性(永久存储)、高容量和低造价的特点,但访问速度较慢。
二、不同层次存储器的功能不同层次的存储器在计算机系统中发挥着不同的角色,具有不同的功能。
1. CPU寄存器的功能CPU寄存器主要用于存储指令和数据,并进行快速的读写操作。
它的容量非常有限,但速度非常快,能够满足CPU对数据和指令的高速访问需求。
cpu中用来暂时存放数据指令的部件
CPU(Central Processing Unit,中央处理器)是计算机最重要的组成部分之一,它负责执行程序中的指令和处理数据。
而CPU中用来暂时存放数据指令的部件,主要包括寄存器、缓存和存储器。
这些部件在CPU中的作用和原理对于理解计算机的基本运作方式至关重要。
1. 寄存器寄存器是CPU内部的存储设备,它用来存储指令、数据和位置区域。
在CPU执行指令时,需要从内存中读取指令和数据到寄存器中进行运算和处理。
不同的CPU拥有不同数量和种类的寄存器,一般包括通用寄存器、特殊目的寄存器和程序计数器等。
通用寄存器用来存储临时数据和运算结果,例如进行加减乘除运算时需要暂时存储数据的中间结果。
特殊目的寄存器用来存储特定功能的数据,例如控制器状态、位置区域和数据传输等。
程序计数器用来存储下一条将要执行的指令的位置区域,保证程序的正常执行。
2. 缓存缓存是一种高速缓冲存储器,用来暂时存储频繁使用的数据和指令,以提高CPU对内存的访问速度。
CPU中的缓存主要包括一级缓存(L1 Cache)、二级缓存(L2 Cache)和三级缓存(L3 Cache)。
它们根据与CPU的距离和速度逐级递减,但容量逐级递增。
一级缓存通常集成在CPU中,速度最快但容量最小,用来存储当前正在执行的指令和数据。
二级缓存通常集成在CPU芯片上,速度较快但容量适中,用来存储频繁使用的数据。
三级缓存通常集成在CPU与主板之间,速度较慢但容量大,用来存储更大规模的数据。
3. 存储器存储器是计算机的主要外部存储设备,用来存储程序和数据。
在CPU执行指令时,需要从存储器中读取指令和数据,通过寄存器和缓存进行处理和运算,然后将结果存回存储器。
存储器主要包括内存和外存,根据访问速度和容量的不同分为随机存储器(RAM)和只读存储器(ROM)。
RAM是一种易失性存储器,用来存储正在运行的程序和数据。
CPU通过位置区域总线和数据总线与RAM进行读写操作,以实现程序的执行和数据的存储。
msr 寄存器描述
msr 寄存器描述
MSR(Model Specific Register)是一种特殊类型的CPU寄存器,用于存储处理器的特定配置和控制信息。
MSR寄存器通常用于
控制处理器的性能特征、功耗管理、调度算法和其他微体系结构相
关的功能。
MSR寄存器是处理器架构的一部分,它们通常由处理器制造商
定义,并且在不同的处理器架构(如x86、ARM等)中可能具有不同
的功能和寄存器布局。
这些寄存器通常对操作系统和系统软件可见,以便它们可以配置和控制处理器的特定功能。
MSR寄存器可以用于各种用途,包括调整处理器的性能状态
(如频率、电压等)、启用或禁用处理器功能(如超线程、虚拟化
支持等)、配置内存控制器和高速缓存参数,以及监视处理器的状
态和性能计数器等。
总的来说,MSR寄存器是处理器架构中的一种特殊寄存器,用
于存储处理器的特定配置和控制信息,可以通过操作系统和系统软
件来访问和配置,以实现对处理器功能和性能的灵活控制。
CPU的功能组成及性能参数
CPU的功能组成及性能参数CPU(中央处理器)是一台计算机中最重要的部件之一,它负责执行计算机指令并控制计算机的操作。
CPU的功能组成和性能参数有许多,下面将详细介绍。
一、功能组成:1. 控制单元(Control Unit):控制单元负责解析和执行计算机指令。
它包括指令寄存器、程序计数器和指令译码器等组成部分。
控制单元根据指令的要求发出相关的控制信号,使CPU中的其他部件工作。
2. 算术逻辑单元(Arithmetic Logic Unit, ALU):算术逻辑单元是执行计算和逻辑操作的核心部件。
它包括加法器、逻辑门和运算控制电路等,用于执行算术运算(加法、减法等)和逻辑运算(与、或、非等)。
3. 寄存器(Register):寄存器是存储器件,用于保存临时数据和指令。
常见的寄存器包括累加器(用于存储计算结果)、通用寄存器(存储临时数据)和程序计数器(存储当前指令地址)等。
4. 缓存(Cache):缓存是位于CPU和主存之间的一级高速存储器。
它能够暂时存储最常用的数据和指令,以加快CPU对这些数据和指令的访问速度。
5. 数据总线(Data Bus):数据总线是CPU内部用于传送数据的通道。
它负责将数据从一个部件传送到另一个部件。
数据总线的宽度决定了CPU能够同时传送的数据位数,也就是数据的带宽。
6. 地址总线(Address Bus):地址总线是CPU内部用于传送地址的通道。
它负责将计算机内存的地址传送给主存储器,以便读取或写入数据。
7. 控制总线(Control Bus):控制总线是CPU内部用于传送控制信号的通道。
它负责将控制信号传送到相关的部件,以使它们按照指令要求工作。
二、性能参数:1. 主频(Clock Speed):主频指的是CPU的振荡频率,也被称为时钟频率。
它表示CPU每秒钟执行指令的次数,常用单位是赫兹(Hz)。
主频越高,CPU的工作速度越快。
2. IPC(Instructions Per Cycle):IPC表示每个时钟周期内执行的指令数。
CPU中的专用寄存器SFR
程序计数器PC
PC是一个16位的寄存器,具有自动加1功能,用来存放下一条要 执行的指令在程序存储器中地址,以保证程序按人们编写的顺序 执行。编码范围:0000H~FFFFH。 当要执行一段程序时,必须预先按指令的执行顺序把程序放到 ROM中,然后从第一条指令开始,取出一条执行一条,直到程 序执行完毕。如何保证这一顺序呢?这就必须要有一个具有自动 加1功能的寄存器来保存当前要取出的地址,这就是PC。 在程序开始执行之前,先将程序的起始地址(即程序的第一条指 令的地址)送入PC,CPU把PC的值作为地址,通过地址总线送 入存储器,取出程序的第一条指令。每取出一个字节PC自动加1。 所以有人认为PC是CPU的“向导”。 PC在物理结构上是独立的,不属于SFR区,无字节地址和位地址, 但仍是具有专用功能的寄存器,所以有人认为片内SFR有22个。
返回
通用寄存器B
B是一个专为乘法和除法运算设置的8位寄存器, 一般与累加器A配合使用。字节地址:F0H 位地址:F0H~F7H。B在乘法或除法前,用来 存放乘数或除数,在乘法或除法完成后用来存 放乘积的高8位或除数的余数。对于其它指出 令,寄存器B可用来存中间结果。 例: MOV A,#65H ;A 65H MOV B,#34H ;B 34H MUL AB ;BA A X B=65H X 34H 结果(A)=84H (B)=14H
返回
电源控制及波特率选择寄存器PCON
PCON是一个8位的专用寄存器,字节地址87H, 无位地址。用于控制CPU进入待机或节电工作 方式以及串行通信的波特率是否加倍。(具体 内容以后再介绍)。
返回
DPTR DPH(83H)DPL(82H)
寄存器
存储器数据寄存器(MDR)和存储器地址寄存器(MAR)用于对内存单元访问时的数据和地址暂存,也是由系统使用的,程序员不能访问。
程序被加载到内存后开始运行,当CPU执行一条指令时,先把它从内存储器取到缓冲寄存器DR中,再送入IR暂存,指令译码器根据IR的内容产生各种微操作指令,控制其他的组成部件工作,完成所需的功能。程序计数器(PC)具有寄存信息和计数两种功能,又称为指令计数器。程序的执行分两种情况,一是顺序执行,二是转移执行。在程序开始执行前,将程序的起始地址送入PC,该地址在程序加载到内存时确定,因此PC的内容即是程序第一条指令的地址。执行指令时,CPU将自动修改PC的内容,以便使其保持的总是将要执行的下一条指令的地址。由于大多数指令都是按顺序来执行的,所以修改的过程通常只是简单地对PC加1。当遇到转移指令时,后继指令的地址根据当前指令的地址加上一个向前或向后转移的位移量得到,或者根据转移指令给出的直接转移地址得到。
地址寄存器(AR)用来保存当前CPU所访问的内存单元的地址。由于在内存和CPU之问存在着操作速。
程序计数器(PC)用于存储指令的地址,CPU根据该寄存器的内容从内存读取待执行的指令,程序员可以访问该寄存器。当执行指令时,CPU将自动修改PC的内容,即每执行一条指令PC增加一个量,这个量等于指令所含的字节数,以便使其保持的总是将要执行的下一条指令的地址。由于大多数指令都是按顺序来执行的,所以修改的过程通常只是简单的对PC加1。
寄存器是CPU中的一个重要组成部分,它是CPU内部的临时存储单元。寄存器既可以用来存放数据和地址,也可以存放控制信息或CPU工作时的状态。在CPU中增加寄存器的数量,可以使CPU把执行程序时所需的数据尽可能地放在寄存器件中,从而减少访问内存的次数,提高其运行速度。但是,寄存器的数目也不能太多,除了增加成本外,由于寄存器地址编码增加也会相对增加指令的长度。CPU中的寄存器通常分为存放数据的寄存器、存放地址的寄存器、存放控制信息的寄存器、存放状态信息的寄存器和其他寄存器等类型。程序计数器用于存放指令的地址。令当程序顺序执行时,每取出一条指令,PC内容自动增加一个值,指向下一条要取的指令。当程序出现转移时,则将转移地址送入PC,然后由PC指向新的程序地址。程序状态寄存器用于记录运算中产生的标志信息,典型的标志为有进位标志位、零标志位、符号标志位、溢出标志位和奇偶标志等。地址寄存器包括程序计数器、堆栈指示器、变址寄存器和段地址寄存器等,用于记录各种内存地址。累加寄存器是一个数据寄存器,在运算过程中暂时存放被操作数和中间运算结果,累加器不能用于长时间地保存一个数据。
寄存器的工作原理
寄存器的工作原理概述:寄存器是计算机中一种用于存储和操作数据的硬件设备。
它是一组存储单元,每个单元都可以存储一个固定长度的二进制数据。
寄存器在计算机的运算和控制过程中起着重要的作用。
本文将详细介绍寄存器的工作原理。
一、寄存器的组成和结构寄存器由多个存储单元组成,每个存储单元可以存储一个位或一个字节的数据。
寄存器的位数决定了它可以存储的数据的范围。
常见的寄存器位数有8位、16位、32位和64位等。
寄存器通常由触发器构成,每个触发器可以存储一个位。
多个触发器可以组合成一个字节或更长的数据。
寄存器还包括一些控制线路,用于控制读取和写入操作。
二、寄存器的功能1. 数据存储:寄存器用于存储计算机中的数据。
它可以暂时保存数据,供后续的运算和处理使用。
寄存器的存储速度非常快,是其他存储设备无法比拟的。
2. 数据传输:寄存器可以将数据从一个地方传输到另一个地方。
例如,CPU中的寄存器可以将数据从内存读取到寄存器中,或者将数据从寄存器写入内存。
3. 运算操作:寄存器可以进行一些基本的运算操作,例如加法、减法、位移等。
这些运算操作可以在寄存器中完成,而不需要访问内存或其他外部设备,从而提高了计算速度。
4. 控制信号:寄存器中的某些位可以用于存储控制信号,用于控制计算机的各种操作。
例如,标志寄存器中的某些位可以存储条件判断的结果,用于控制程序的执行流程。
三、寄存器的工作原理1. 读取操作:当需要从寄存器中读取数据时,控制线路会发送读取信号,触发器将存储的数据输出到数据总线上,供其他部件使用。
2. 写入操作:当需要将数据写入寄存器时,控制线路会发送写入信号,将要写入的数据送入数据总线,触发器接收到数据后进行存储。
3. 运算操作:寄存器可以进行一些基本的运算操作,例如加法、减法等。
这些运算操作是通过将两个寄存器的内容送入运算单元进行计算,然后将结果存储到另一个寄存器中实现的。
4. 控制信号:寄存器中的某些位可以用于存储控制信号,用于控制计算机的各种操作。
列举8086cpu中的寄存器
列举8086cpu中的寄存器8086 CPU是英特尔公司在1978年推出的一款16位微处理器,它是x86架构中最早的一款CPU。
在8086 CPU中,有许多寄存器,这些寄存器用于存储数据、地址等信息。
下面将列举8086 CPU中的寄存器。
一、通用寄存器1. AX寄存器:AX寄存器是8086 CPU中最重要的寄存器之一,它可以被分成两个8位的子寄存器AH和AL。
AH和AL分别称为高位和低位,它们可以独立使用也可以组合使用。
AX寄存器主要用于算术运算和数据传输。
2. BX寄存器:BX寄存器也是一个通用寄存器,它同样可以被分成两个8位的子寄存器BH和BL。
BH和BL也可以独立使用或者组合使用。
BX寄存器主要用于保存内部数据指针(如基址指针)。
3. CX寄存器:CX寄存器同样是一个通用寄存器,它也可以被分成两个8位的子寄存器CH和CL。
CH和CL也可以独立使用或者组合使用。
CX寄存器主要用于循环计数。
4. DX寄存器:DX寄存器也是一个通用寄存器,它同样可以被分成两个8位的子寄存器DH和DL。
DH和DL也可以独立使用或者组合使用。
DX寄存器主要用于输入输出操作。
二、指针寄存器1. SP寄存器:SP寄存器是栈指针寄存器,它用于指向栈顶。
在进行函数调用、中断处理等操作时,SP寄存器会被自动修改。
2. BP寄存器:BP寄存器是基址指针寄存器,它主要用于保存堆栈底部的地址。
在进行函数调用、中断处理等操作时,BP寄存器会被自动修改。
三、段寄存器1. CS寄存器:CS寄存器是代码段寄存器,它保存了程序代码所在的段地址。
2. DS寄存器:DS寄存器是数据段寄存器,它保存了数据所在的段地址。
3. SS寄存器:SS寄存器是堆栈段寄存器,它保存了堆栈所在的段地址。
4. ES/FS/GS等其他段选择子:ES/FS/GS等其他段选择子也是用来保存不同类型数据所在的地址信息。
四、标志位8086 CPU中还有一些标志位,这些标志位记录了CPU运算过程中产生的状态信息。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
DS(Data Segment):数据段寄存器;
SS(Stack Segment):堆栈段寄存器;
ES(Extra Segment):附加段寄存器。
当一个程序要执行时,就要决定程序代码、数据和堆栈各要用到内存的哪些位置,通过设定段寄存器 CS,DS,SS 来指向这些起始位置。通常是将DS固定,而根据需要修改CS。所以,程序可以在可寻址空间小于64K的情况下被写成任意大小。 所以,程序和其数据组合起来的大小,限制在DS 所指的64K内,这就是COM文件不得大于64K的原因。8086以内存做为战场,用寄存器做为军事基地,以加速工作。
(1)通用寄存器有8个, 又可以分成2组,一组是数据寄存器(4个),另一组是指针寄存器及变址寄存器(4个).
数据寄存器分为:
AH&AL=AX(accumulator):累加寄存器,常用于运算;在乘除等指令中指定用来存放操作数,另外,所有的I/O指令都使用这一寄存器与外界设备传送数据.
(2)如果TF=0,则处于连续工作模式。
SF:符号标志SF用来反映运算结果的符号位,它与运算结果的最高位相同。在微机系统中,有符号数采用补码表示法,所以,SF也就反映运算结果的正负号。运算结果为正数时,SF的值为0,否则其值为1。
ZF: 零标志ZF用来反映运算结果是否为0。如果运算结果为0,则其值为1,否则其值为0。在判断运算结果是否为0时,可使用此标志位。
AF:下列情况下,辅助进位标志AF的值被置为1,否则其值为0:
(1)、在字操作时,发生低字节向高字节进位或借位时;
(2)、在字节操作时,发生低4位向高4位进位或借位时。
PF:奇偶标志PF用于反映运算结果中“1”的个数的奇偶性。如果“1”的个数为偶数,则PF的值为1,否则其值为0。
EBX:通用寄存器。通常作为内存偏移指针使用(相对于EAX、ECX、EDX),DS是默认的段寄存器或选择器。在保护模式中,同样可以起这个作用。
ECX:通用寄存器。通常用于特定指令的计数。在保护模式中,也可以作为内存偏移指针(此时,DS作为 寄存器或段选择器)。
EDX:通用寄存器。在某些运算中作为EAX的溢出寄存器(例如乘、除)。在保护模式中,也可以作为内存偏移指针(此时,DS作为段 寄存器或选择器)。
另一组是指针寄存器和变址寄存器,包括:
SP(Stack Pointer):堆栈指针,与SS配合使用,可指向目前的堆栈位置;
BP(Base Pointer):基址指针寄存器,可用作SS的一个相对基址位置;
SI(Source Index):源变址寄存器可用来存放相对于DS段之源变址指针;
ES 附加段,或附加选择器。这个寄存器的低16 bit连同EDI一同指向的指令将要S F段或F选择器(推测F可能是Free?)。可以用这个寄存器作为默认段寄存器或选择器的一个替代品。它可以被装入任何数值,方法和DS类似。
(2)、当IF=0时,CPU不响应CPU外部的可屏蔽中断发出的中断请求。
TF:跟踪标志TF。该标志可用于程序调试。TF标志没有专门的指令来设置或清楚。
(1)如果TF=1,则CPU处于单步执行指令的工作方式,此时每执行完一条指令,就显示CPU内各个寄存器的当前值及CPU将要执行的下一条指令。
C、段选择器:
实模式下的段寄存器到保护模式下摇身一变就成了选择器。不同的是,实模式下的“段寄存器”是16-bit的,而保护模式下的选择器是32-bit的。
CS 代码段,或代码选择器。同IP寄存器(稍后介绍)一同指向当前正在执行的那个地址。处理器执行时从这个寄存器指向的段(实模式)或内存(保护模式)中获取指令。除了跳转或其他分支指令之外,你无法修改这个寄存器的内容。
以上是8086寄存器的整体概况, 自80386开始,PC进入32bit时代,其寻址方式,寄存器大小,功能等都发生了变化。
=============================以下是80386的寄存器的一些资料======================================
EBP:这也是一个作为指针的寄存器。通常,它被高级语言编译器用以建造‘堆栈帧'来保存函数或过程的局部变量,不过,还是那句话,你可以在其中保存你希望的任何数据。SS是它的默认段寄存器或选择器。
注意,这三个寄存器没有对应的8-bit分组。换言之,你可以通过SI、DI、BP作为别名访问他们的低16位,却没有办法直接访问他们的低8位。
(3)标志寄存器FR(Flag Register)
8086有一个18位的标志寄存器FR,在FR中有意义的有9位,其中6位是状态位,3位是控制位。
OF: 溢出标志位OF用于反映有符号数加减运算所得结果是否溢出。如果运算结果超过当前运算位数所能表示的范围,则称为溢出,OF的值被置为1,否则,OF的值被清为0。
寄存器是中央处理器内的组成部份。寄存器是有限存贮容量的高速存贮部件,它们可用来暂存指令、数据和位址。在中央处理器的控制部件中,包含的寄存器有指令寄存器(IR)和程序计数器(PC)。在中央处理器的算术及逻辑部件中,包含的寄存器有累加器(ACC)。
寄存器是内存阶层中的最顶端,也是系统获得操作资料的最快速途径。寄存器通常都是以他们可以保存的位元数量来估量,举例来说,一个 “8 位元寄存器”或 “32 位元寄存器”。寄存器现在都以寄存器档案的方式来实作,但是他们也可能使用单独的正反器、高速的核心内存、薄膜内存以及在数种机器上的其他方式来实作出来。
DI(Destination Index):目的变址寄存器,可用来存放相对于 ES 段之目的变址指针。
这4个16位寄存器只能按16位进行存取操作,主要用来形成操作数的地址,用于堆栈操作和变址运算中计算操作数的有效地址。
(2) 指令指针IP(Instruction Pointer)
指令指针IP是一个16位专用寄存器,它指向当前需要取出的指令字节,当BIU从内存中取出一个指令字节后,IP就自动加1,指向下一个指令字节。注意,IP指向的是指令地址的段内地址偏移量,又称偏移地址(Offset Address)或有效地址(EA,Effective Address)。
GS G段或G选择器(G的意义和F一样,没有在Intel的文档中解释)。它和FS几乎完全一样。
SS 堆栈段或堆栈选择器。这个寄存器的低16 bit连同ESP一同指向下一次堆栈操作(push和pop)所要使用的堆栈地址。这个寄存器也可以被装入任意数值,你可以通过入栈和出栈操作来给他赋值,不过由于堆栈对于很多操作有很重要的意义,因此,不正确的修改有可能造成对堆栈的破坏。
[编辑本段]寄存器用途
1.可将寄存器内的数据执行算术及逻辑运算;
2.存于寄存器内的地址可用来指向内存的某个位置,即寻址;
3.可以用来读写数据到电脑的周边设备。
[编辑本段]数据寄存器
8086 有14个16位寄存器,这14个寄存器按其用途可分为(1)通用寄存器、(2)指令指针、(3)标志寄存器和(4)段寄存器等4类。
BH&BL=BX(base):基址寄存器,常用于地址索引;
CH&CL=CX(count):计数寄存器,常用于计数;常用于保存计算值,如在移位指令,循环(loop)和串处理指令中用作隐含的计数器.
DH&DL=DX(data):数据寄存器,常用于数据传递。
他们的特点是,这4个16位的寄存器可以分为高8位: AH, BH, CH, DH.以及低八位:AL,BL,CL,DL。这2组8位寄存器可以分别寻址,并单独使用。
* 注意 一定不要在初学汇编的阶段把这些寄存器弄混。他们非常重要,而一旦你掌握了他们,你就可以对他们做任意的操作了。段寄存器,或选择器,在没有指定的情况下都是使用默认的那个。这句话在现在看来可能有点稀里糊涂,不过你很快就会在后面知道如何去做。
指令指针寄存器:
EIP 这个寄存器非常的重要。这是一个32位宽的寄存器 ,同CS一同指向即将执行的那条指令的地址。不能够直接修改这个寄存器的值,修改它的唯一方法是跳转或分支指令。(CS是默认的段或选择器)
上面是最基本的寄存器。下面是一些其他的寄存器,你甚至可能没有听说过它们。(都是32位宽):
CR0, CR2, CR3(控制寄存器)。举一个例子,CR0的作用是切换实模式和保护模式。
还有其他一些寄存器,D0, D1, D2, D3, D6和D7(调试寄存器)。他们可以作为调试器的硬件支持来设置条件断点。
DF:方向标志DF位用来决定在串操作指令执行时有关指针寄存器发生调整的方向。
IF:中断允许标志IF位用来决定CPU是否响应CPU外部的可屏蔽中断发出的中断请求。但不管该标志为何值,CPU都必须响应CPU外部的不可屏蔽中断所发出的中断请求,以及CPU内部产生的中断请求。具体规定如下:
(1)、当IF=1时,CPU可以响应CPU外部的可屏蔽中断发出的中断请求;
CF:进位标志CF主要用来反映运算是否产生进位或借位。如果运算结果的最高位产生了一个进位或借位,那么,其值为1,否则其值为0。)
4)段寄存器(Segment Register)
为了运用所有的内存空间,8086设定了四个段寄存器,专门用来保存段地址:
CS(Code Segment):代码段寄存器;
同AX分为AH&AL一样,上述寄存器包括对应的16-bit分组和8-bit分组。
B、用作内存指针的特殊寄存器
ESI:通常在内存操作指令中作为“源地址指针”使用。当然,ESI可以被装入任意的数值,但通常没有人把它当作通用寄存器来用。DS是默认段寄存器或选择器。
EDI:通常在内存操作指令中作为“目的地址指针”使用。当然,EDI也可以被装入任意的数值,但通常没有人把它当作通用寄存器来用。DS是默认段寄存器或选择器。