通用寄存器组
8086结构组成
8086结构组成8086是一款16位微处理器,它的结构组成非常复杂。
本文将从以下几个方面来详细介绍8086的结构组成。
一、总体结构8086由三个主要部分组成:执行单元(EU)、总线接口单元(BIU)和寄存器组。
1.执行单元:负责执行指令并进行算术和逻辑运算。
2.总线接口单元:负责与外部设备通信并控制数据传输。
3.寄存器组:包括通用寄存器、段寄存器和指令指针寄存器等。
二、执行单元1.指令队列指令队列是执行单元中的一个重要部分,它可以存储多条指令,以便快速地进行取指令操作。
当EU需要执行一条新的指令时,它会从队列中取出下一条指令并开始执行。
2.算术逻辑单元算术逻辑单元(ALU)是执行单元中的核心部分,它可以进行各种算术和逻辑运算,如加、减、乘、除、与、或等操作。
ALU还可以处理条件跳转和无条件跳转等控制操作。
3.状态标志寄存器状态标志寄存器(FLAGS)用于记录ALU运算的结果,以便EU进行下一步操作。
FLAGS寄存器包括零标志位、进位标志位、溢出标志位等。
三、总线接口单元1.地址加法器地址加法器(AFA)是BIU的核心部分,它可以将内部地址转换为外部地址,并控制数据传输。
2.指令缓存器指令缓存器(IC)用于存储从内存中读取的指令。
当EU需要执行一条新的指令时,BIU会从IC中取出相应的指令并传输给EU。
3.数据缓存器数据缓存器(DC)用于暂时存储从内存中读取或写入的数据。
当EU 需要访问内存时,BIU会将相应的数据传输到DC中,EU再从DC中读取或写入数据。
四、寄存器组1.通用寄存器8086有8个16位通用寄存器,分别命名为AX、BX、CX、DX、SI、DI、BP和SP。
这些寄存器可以用于保存临时数据和计算结果等。
2.段寄存器8086有4个16位段寄存器,分别命名为CS、DS、ES和SS。
这些寄存器用于保存程序和数据在内存中的位置信息。
3.指令指针寄存器指令指针寄存器(IP)用于保存下一条指令在内存中的地址。
汇编语言考试复习资料
汇编语⾔考试复习资料汇编语⾔期末复习资料整理第⼆章1、寄存器组(1)通⽤寄存器数据寄存器EAX(32位) AX(16位) AH(8位)(⾼位) AL(8位)(低位)累加器EBX(32位) BX(16位) BH(8位)(⾼位) BL(8位)(低位)基址变址ECX(32位) CX(16位) CH(8位)(⾼位)CL(8位)(低位)计数器EDX(32位) DX(16位) DH(8位)(⾼位) DL(8位)(低位)数据指针或变址寄存器ESP(32位) SP(16位)堆栈指针寄存器EBP(32位) BP(16位)基址指针寄存器EDI(32位) DI(16位)⽬的变址寄存器ESI(32位) SI(16位)源变址寄存器(2)专⽤寄存器EIP(32位) IP(16位)指令指针寄存器EFLAGS(32位) FLAGS(16位)标志寄存器ESP (32位) SP(16位)堆栈指针寄存器2、标志位的符号表⽰、3、段寄存器CS(16位)代码段 DS(16位)数据段SS(16位)堆栈段 ES(16位)附加段4、段寄存器和相应存放偏移地址的寄存器之间的默认组合第三章1、七种寻址⽅式(举例)⽴即寻 MOV AX,3069H寄存器寻 MOV AL,BH在内存中的五种寻址直接寻 MOV AX,[2000H]寄存器间接寻 MOV AX,[BX]寄存器相对寻 MOV AX,COUNT[SI] 或者 MOV AX,[SI+COUNT](不推荐) 基址变址寻址 MOV AX,[BP][DI]相对基址变址寻址 MOV AX,MASK[BX][SI]2、指令系统I.数据传送指令(1)通⽤数据传送指令MOV 传送MOVSX 带符号扩展传送⽤源操作数的符号位来填充⽬的操作数的⾼位数据位。
例:MOVSX EAX,CL把CL寄存器中的8位数,符号扩展为32位数,送到EAX寄存器中。
MOVZX 带零扩展传送恒⽤0来填充⽬的操作数的⾼位数据位例:MOVZX DX,AL把AL寄存器中的8位数,零扩展成16位数,送到DX寄存器中。
第二章 80868088寻址方式和指令系统
(5)奇偶标志PF
用于反映运算结果中“1”的个数。如果“1”的个数为偶数,则OF被置1,否则OF被清0。
(6)辅助进位标志AF
在字节操作时,如发生低半字节向高半字节进位或借位;在字操作时,如发生低字节向高字 节进位或借位,则辅助进位标志AF被置1,否则AF被清0。
②状态控制标志
(1)方向标志DF
方向标志决定着串操作指令执行时,有关指针寄存器调整方向。 当DF为1时,串操作指令按减方式改变有关的存储器指针值, 当DF为0时,串操作指令按加方式 改变有关的存储器指针值。
其中:存储单元的物理地址是12345H, 标出的:两个重叠段的段值分别是:1002H和1233H, 在对应段内的偏移分别是2325H和0015H。
采用段值和偏移构成逻辑地址后,段值由段寄存器给出,偏移可由指令指针IP、堆栈指针SP 和其他可作为存储器指针使用的寄存器(SI、DI、BX和BP)给出,偏移还可直接用16位数给 出。
图中指令存放在代码段中,OP表示该指令的操作码部分 再例如: MOV AL,5 则指令执行后,(AL)=05H
MOV BX,3064H 则指令执行后, (BX)=3064H
2、寄存器寻址方式
操作数在CPU内部的寄存器中,指令指定寄存器号。
对于16位操作数数,寄存器可以是:
AX、BX、CX、DX、SI、DI、SP和BP等;
指令中不使用物理地址,而是使用逻辑地址,由总线接口单元BIU按需要根据段值和偏移自动 形成20位物理址。
3、段寄存器的引用
由于8086/8088CPU有四个段寄存器,可保存四个段值。所以可同时使用四个段值,但这四个 段有所分工。
在取指令的时候,自动引用代码段寄存器CS,再加上由IP所给出的16位偏移,得到要取指令 的物理地址。
2 寄存器(CPU工作原理)
注:当所保存的数据位数大于寄存器的位数时,高位的 ADD AX,BX 8226H 2000H 数据会丢失,称为数据溢出。
MOV BX,AX
ADD AX,BX
8226H+8226H=1044CH
8226H 044CH
AX=?
8226H 8226H
7
程序段中的指令 AX中的数据 BX中的数据 MOV AX,001AH 001AH 0000H MOV BX,0026H 001AH 0026H 注:当通用寄存器作为8位寄存器使用时,低8位和高8位相当于 ADD AL,BL 0040H 0026H 两个独立的寄存器,它们之间没有直接关系,不能产生进位。 ADD AH,BL 2640H 0026H ADD BH,AL 2640H 4026H MOV AH,0 0040H 4026H ADD AX,93H AX=? ADD AL,85H 00C5H 4026H ADD AL,93H 0058H 4026H
BB 03 00
20009
2000A
add ax, bx
BB 03 00
执行控制器
25
CPU
内存
B8 23 地址加法器 01 BB 20008 03 00 地址 89 总线 D8 20006 01 20008 D8
89 D8 输入输出 数据 总线 控制电路 20000 20001 mov ax,0123H
mov bx,0003H
指令缓冲器
mov ax, bx
其他 部件
add ax, bx
执行控制器
23
CPU
内存
20000 20001 mov ax,0123H
B8 23 地址加法器 01 AX 0123 CS 2000 BB 20003 20000 03 BX IP 0000 0003 00 若当前CPU中的状态为: 地址 89 CS=2000,IP=0000 总线 D8 指令缓冲器 20000 B8 23 01 其他 01 20000 部件 20003 D8
微型计算机原理与接口技术(周荷琴着)课后答案
第一章1.什么是冯·诺依曼机?答:冯·诺依曼于1945年提出了存储程序的概念和二进制原理,利用这种概念和原理设计的电子计算机系统统称为冯·诺依曼机。
它包括运算器、控制器、存储器、输入设备和输出设备五个组成部分。
早期的冯·诺依曼机结构上以运算器和控制器为中心,随着计算机体系结构的发展,现在已演化为以存储器为中心的结构。
2.微处理器,微型计算机,微型计算机系统有什么联系与区别?答:微处理器是微型计算机系统的核心,也称为CPU(中央处理器)。
主要完成:①从存储器中取指令,指令译码;②简单的算术逻辑运算;③在处理器和存储器或者I/O之间传送数据;④程序流向控制等。
微型计算机由微处理器、存储器、输入/输出接口电路和系统总线组成。
以微型计算机为主体,配上外部输入/输出设备及系统软件就构成了微型计算机系统。
三者关系如下图:3.微处理器有哪些主要部件组成?其功能是什么?答:微处理器是一个中央处理器,由算术逻辑部件ALU、累加器和寄存器组、指令指针寄存器IP、段寄存器、标志寄存器、时序和控制逻辑部件、内部总线等组成。
算术逻辑部件ALU主要完成算术运算及逻辑运算。
累加器和寄存器组包括数据寄存器和变址及指针寄存器,用来存放参加运算的数据、中间结果或地址。
指令指针寄存器IP存放要执行的下一条指令的偏移地址,顺序执行指令时,每取一条指令增加相应计数。
段寄存器存放存储单元的段地址,与偏移地址组成20位物理地址用来对存储器寻址。
标志寄存器flags存放算术与逻辑运算结果的状态。
时序和控制逻辑部件负责对整机的控制:包括从存储器中取指令,对指令进行译码和分析,发出相应的控制信号和时序,将控制信号和时序送到微型计算机的相应部件,使CPU 内部及外部协调工作。
内部总线用于微处理器内部各部件之间进行数据传输的通道。
4.画一个计算机系统的方框图,简述各部分主要功能。
答:计算机系统由硬件(Hardware)和软件(Software)两大部分组成。
微机原理与接口技术考试试题答案
微机原理与接口技术考试试题答案微机原理与接口技术考试试题答案.微机原理不接口技术试题答案一、填空题,20*1,1、微机系统由,硬件系统,和,软件系统,两部分组成。
2、8086有,20 ,位地址线,存储器容量为, 1M,B。
3、8086CPU 内部组成结构从功能上讲,可分为, BIU ,和, EU ,两部分。
4、8086/8088的四个段寄存器为,DS ,、,ES ,、,SS ,、, CS ,5、用来存放CPU状态信息的寄存器是, FLAGS ,。
6、用来存放指令地址的寄存器是, IP ,。
7、8086的16位标志寄存器FLAGS中OF=1表示运算结果,溢出,,ZF=1表示运算结果为零。
PF=0表示运算结果的低8位中1的个数为,奇数,。
8、 8086的16位标志寄存器FLAGS中IF=1表示CPU,允许,中断,TF=1表示CPU进入,单步,工作方式。
9、地址4000H:0300H,其物理地址是,40300H,,段地址是,4000H ,,偏秱地址是,0300H ,。
...11、I/O端口的寻址方式有两种,分别是( 直接寻址 ),( 间接寻址 )。
12、指令JO NEXT 表示OF=( 1 )时转秱。
13、将I/O设备端口内容读入AL中的指令劣记符是( IN)。
14、8086CPU的I/O指令采用间接寻址时,使用的间接寄存器是( DX)。
15、设置DF=1的指令为, STD ,。
16、清除CF标志的指令为, CLC ,。
17、一对操作堆栈的指令为,POP ,和,PUSH ,。
18、LOOPNZ的循环条件为, CX?0丏ZF=0 ,。
19、实现无符号数乘2的指令的劣记符是,SHL ,,实现有符号数除2的指令的劣记符是,SAR ,。
22、8086CPU引脚信号中中断请求两个信号名称为,INT ,和,NMI ,。
26、I/O端口的编址方式一般有,存储器统一编址,和,独立编址,两种29.1片8259A中断控制器可管理, 8 ,级中断,用9片8259A可构成, 64 ,级主从式中断管理系统。
微机原理第02章1
第2章: 溢出和进位的对比
例1:3AH+7CH=B6H
无符号数运算: 58+124=182 范围内,无进位 有符号数运算: 58+124=182 范围外,有溢出
例2:AAH+7CH=(1)26H
无符号数运算: 170+124=294 范围外,有进位 有符号数运算: -86+124=28 范围内,无溢出
常用来存放双字长数据的高16位,或存放外设端口地址
第2章:(2)变址寄存器
16位变址寄存器SI和DI 常用于存储器变址寻址方式时提供地址
SI是源地址寄存器(Source Index) DI是目的地址寄存器(Destination Index)
在串操作类指令中, SI 、 DI 还有较特殊的 用法 现在不必完全理解,以后会详细展开
第2章:溢出和进位的应用场合
处理器对两个操作数进行运算时,按照无 符号数求得结果,并相应设置进位标志 CF; 同时,根据是否超出有符号数的范围设置 溢出标志OF 应该利用哪个标志,则由程序员来决定。 也就是说,如果将参加运算的操作数认为 是无符号数,就应该关心进位;认为是有 符号数,则要注意是否溢出
第2章:符号标志SF(Sign Flag)
运算结果最高位为1,则SF=1; 否则SF=0
有符号数据用最高有效位表示数据的符号 所以,最高有效位就是符号标志的状态
3AH+7CH=B6H,最高位D7=1:SF=1
84H+7CH=(1)00H,最高位D7=0:SF=0
第2章:奇偶标志PF(Parity Flag)
第2章:辅助进位标志AF(Auxiliary Carry Flag)
运算时D3位(低半字节)有进位或
借位时,AF=1;否则AF=0
这个标志主要由处理器内部使用, 用于十进制算术运算调整指令中, 用户一般不必关心 3AH+7CH=B6H,D3有进位:AF=1
CPU
⁶
指令的重叠执行——流水线工作原理
五条指令重叠执行情况: 1T 2T 3T 4T 5T ——机器执行时间 取指1译码1取数1 运算1 存数1 取指2译码2 取数2 运算2 存数2 取指3 译码3 取数3 运算3 存数3 取指4 译码4 取数4 运算4 存数4 取指5 译码5 取数5 运算5 存数5
硬布线控制逻辑——硬件控制指令执行的方法
通过硬件逻辑电路之间的直接连线来产生计算机各部 分操作所需要的控制信号。精简指令系统计算机采用。 优:速度快 缺:不容易修改和扩展
21
2.3、时钟控制电路
——为每条指令按时间顺序执行提供基准信号。 时钟控制电路由时钟脉冲发生器(石英晶体振荡器) 和启停控制电路组成。 石英晶体振荡器产生一定频率的时钟脉冲信号,作为整个机器 的时间基准源。 主频称为主机振荡频率,它的高低取决于这台计算机的CPU的 适应能力。 时钟周期:主频的倒数,表示相邻脉冲的时间间隔。 指令周期:执行一条指令所需要的时间。 机器周期 :将指令周期划分成几个时间段,每个阶段称为一个 机器周期。 时钟周期≤机器周期≤指令周期
22
2.4微处理器采用的新技术
2.4.1、流水线工作原理 冯· 诺依曼型计算机工作原理
依序逐条执行程序指令,每条指令的各个操作也按顺序 串行执行。例如:加法指令依序分成取指令/指令译码/取 数操作/运算处理和写结果五个步骤。执行过程如下: 取指1 译码1 取数1 运算1 存数1 取指2 译码2 取数2 运算2 存数2….... 特点:控制简单 ,速度低,机器各部件利用率低。例如 在取指令时译码器和运算器等都空闲,而在存结果时其 它部件也在空闲。 若能把程序中的多条指令在时间上重叠起来执行会否显 著提高机器速度呢?
Intel 80486设有下列专用寄存器: 机器状态字寄存器MSW 描述符寄存器——存储管理。 测试寄存器——用于存储管理。 控制寄存器 –虚地址方式、实地值 方式选择 调试寄存器——用于程序调试。
(选做)方案3:4个8位通用寄存器组的设计思路
4个8位通用寄存器组的设计与VHDL实现一、设计目标设计一个通用寄存器组Reg4-8,里面包含4个寄存器,每个寄存器可以存储8位的数据。
每次读的时候,能同时读出两个数据;每次写的时候,可以写入一个数据。
读/写的寄存器单元由寄存器编号所确定。
二、设计要求1.当reset信号为0时,初始化各寄存器的值;2.当reset信号为1时,可以进行寄存器读或写,具体如下:✧寄存器的写受到时钟上升沿的控制。
即当时钟上升沿来临且写使能信号en=1时,将输入的8位数据d[7..0]写入到由寄存器选择编号dest_reg[1..0](如dest_reg[1..0]=“01”)所确定的寄存器(如寄存器R1)中。
其中,[1..0]代表下标从1到0,其它类推;✧寄存器的读不受时钟信号的控制。
即只要给出源寄存器选择编号source_reg[1..0]和目的寄存器选择编号dest_reg[1..0],便同时将这两个对应寄存器单元的数值输出到双数据总线sr[7..0]和dr[7..0]中,以便同时传2个数据给运算器;3. 在CPU中,source_reg[1..0]和dest_reg[1..0]实际上都来自于指令,在运算过程中用户是难于操控的;相应地,寄存器的输出结果sr[7..0]和dr[7..0],也都是传送到运算器那里,是不能直接输出的。
但是,在设计的过程中,我们又必须要检测某个寄存器的内容是什么,以测试指令的执行是否正确。
解决此问题的思路是引入一些附加输入输出信号,如可以设置所需测试的寄存器的编号值,然后将结果输出到相应的指示灯上。
本设计中,我们用reg_sel[1..0]作为待测试的寄存器编号,并用reg_out[7..0]作为该寄存器中读出的数据。
三、设计思路在设计时,首先根据设计目标和要求确定逻辑框图,然后再确定其内部结构。
前者,主要确定输入和输出信号,后者主要确定输出如何利用输入而产生。
1.首先根据上述的设计目标与要求,分析输入输出引脚。
计算机组成原理 实验报告
ALU主要完成对二进制数据的定点算术运算(加减乘除)、逻辑运算(与或非异或)以及移位操作。在某些CPU中还有专门用于处理移位操作的移位器。
通常ALU由两个输入端和一个输出端。整数单元有时也称为IEU(Integer Execution Unit)。我们通常所说的“CPU是XX位的”就是指ALU所能处理的数据的位数。
置S3、S2、S1、S0和Cn的数值,并观察数据总线LED显示灯显示的结果。如置S3、S2、S1、
S0为0010加法运算。
如果实验箱和PC联机操作,则可通过软件中的数据通路图来观测实验结果(软件使用说明
请看附录一),方法是:打开软件,选择联机软件的“【实验】—【运算器实验】”,打开运算器
实验的数据通路图,如图1-1-6所示。进行上面的手动操作,每按动一次ST按钮,数据通路图
会有数据的流动,反映当前运算器所做的操作,或在软件中选择“【调试】—【单节拍】”,其作
用相当于将时序单元的状态开关KK2置为‘单拍’档后按动了一次ST按钮,数据通路图也会反
映当前运算器所做的操作。
重复上述操作,并完成表1-1-2。然后改变A、B的值,验证FC、FZ的锁存功能。
计算机组成原理实验报告
实验一 基本运算器实验
一、
1.了解运算器的组成结构
2.掌握运算器的工作原理
3.深刻理解运算器的控制信号
二、
PC机一台、TD-CMA实验系统一套
三、实验原理
1.(思考题)运算器的组成包括算数逻辑运算单元ALU(Arithmetic and Logic Unit)、浮点运算单元FPU(Floating Point Unit)、通用寄存器组、专用寄存器组。
片内RAM
RAM:片内256字节:低128:00H~1FH:通用寄存器,分四组每组由8个工作寄存器(R0~R7)组成(由状态寄存器PSW 中RS1、RS0设置决定CPU当前使用哪一组)00H~07H(第一组工作寄存器)、08H~0FH(第二组工作寄存器)、10H~17H(第三组工作寄存器)、18H~1FH(第四组工作寄存器)20H~2FH 寻址区除了一般RAM单元进行字节寻址外还可用位寻址访问其各个位30H~7FH 用户RAM区(栈、数据缓冲区)高128:专用寄存器:80H P0 端口081H SP栈(堆栈)指针82H DPL 数据指针(低8位)83H DPH 数据指针(高8位)87H PCON 电源控制88H TCON 定时器/计数器控制89H TMOD 定时器/计数器方式8AH TL0 定时器/计数器0(低字节)8BH TL1 定时器/计数器1(低字节)8CH TH0 定时器/计数器0(高字节)8DH TH1 定时器/计数器1(高字节)90H P1 端口198H SBUF 串行数据缓冲器A0H P2 端口2A8H IE 中断允许B0H P3 端口3B8H IP中断优先级D0H PSW 程序状态字E0H ACC 累加器F0H B B寄存器WDTRST+ A6HTH2* CDH 定时器/计数器2(高字节)TL2* CCH 定时器/计数器2(低字节)RCAP2H* CBH 定时器/计数器2捕获寄存器高字节RCAP2L* CAH 定时器/计数器2捕获寄存器低字节T2CON* C8H 定时器/计数器2控制T2MOD* C9H 定时器/计数器2方式注:对空闲地址的操作时无意义的,若访问到空间地址,则读出的是随机数。
具有11个专用寄存器具有位寻址能力,它们地字节地址正好能被8整除*表示仅89C51/S52有+表示仅A T89S51/S52有片内ROM:7个单元具有特殊功能,是留给系统用。
0000H:51系列单片机上电复位后,PC=0000H开始执行指令0003H:外部中断0入口000BH:定时器0溢出中断入口0013H:外部中断1入口001BH:定时器1溢出中断入口0023H:串行口中断入口002BH:定时器2溢出中断入口(只有89C52/S52有)使用时,通常在这些入口地址处存放一天绝对跳转指令,使程序跳转到用户安排的中断程序启始地址,或者从0000H起始跳转到用户设计的主程序上。
汇编寄存器功能详解
汇编寄存器功能详解汇编语言是一种底层语言,与计算机硬件直接交互。
在汇编语言中,寄存器是一组特殊的存储单元,用于暂时存储数据或指令。
它们在处理器中的位置较为接近,可以快速访问。
在汇编语言中,寄存器被分为通用寄存器、数据段寄存器、指令指针寄存器、标志寄存器等几个类别,每个寄存器都有特定的功能。
一、通用寄存器通用寄存器是CPU中最常见的寄存器,用于存放临时数据和计算的结果。
通用寄存器是命名的,有固定的用途,分别是AX(累加寄存器)、BX(基址寄存器)、CX(计数寄存器)、DX(数据寄存器)、SI(源变址寄存器)、DI(目的变址寄存器)、SP(堆栈指针寄存器)和BP(基址指针寄存器)。
1. AX寄存器(Accumulator Register):是累加器寄存器,用于存放算术和逻辑运算的结果。
在一些特定指令中,它还可以充当乘法或除法运算的除数或被除数。
2. BX寄存器(Base Register):是基址寄存器,通常用于存放数据内存的基址。
它也可以充当累加器或存放地址偏移量的累加器。
3. CX寄存器(Count Register):是计数寄存器,在一些循环指令中用于记录循环迭代的次数。
此外,它还可以充当数据传输或移位指令的位数计数器。
4. DX寄存器(Data Register):是数据寄存器,通常用于存放数据操作的源数据或目标数据。
它也可以存放除法运算的余数或乘法运算的高位结果。
5. SI寄存器(Source Index Register):是源变址寄存器,用于存放源数据的偏移地址。
在字符串或数组的操作中,它通常与DI寄存器共同使用。
6. DI寄存器(Destination Index Register):是目的变址寄存器,用于存放目标数据的偏移地址。
在字符串或数组的操作中,它通常与SI寄存器共同使用。
7. SP寄存器(Stack Pointer Register):是堆栈指针寄存器,用于指向栈顶位置。
ARM CORTEX-M3 内核架构理解归纳
在我看来,Cotex-M3内核的主要包括:嵌套向量中断控制器(NVIC),取值单元,指令译码器,算数逻辑单元(ALU),寄存器组,存储器映射(4GB统一编址各区域功能的划分与界定),对于开发者而言,其实主要关注的主要分为三大块:1、寄存器组2、地址功能划分映射3、中断机制(NVIC)。
1)寄存器组Cortex-M3内核共有19组32位寄存器:R0——R12(通用寄存器);低寄存器组R0——R732位Thumb-2指令与16位Thumb指令均可访问高寄存器组R8——R1232位Thumb-2指令与极少数16位Thumb指令可访问R13(堆栈指针寄存器);主堆栈寄存器MSP(main-SP)/进程堆栈寄存器PSP(Process-SP)同一时间只能使用其中一个。
MSP供操作系统内核及中断(异常)处理子程序使用,PSP只供用户的应用程序代码使用(详细使用详见3、嵌套向量中断控制器(NVIC)的总结)。
堆栈指针是4字节对齐的,故最低两位永远是00;R14(连接寄存器)用于存储程序返回的地址及PC的返回地址;R15(程序寄存器)指向当前程序执行的地址;2)特殊功能寄存器组xPSR(程序状态字寄存器组),32位,可分为三个寄存器分别进行访问,也可以PSR或xPSR 的名字直接组合访问。
应用程序PSR(APSR)中断号PSR(IPSR)执行PSR(EPSR)中断屏蔽寄存器PRIMASK 单一比特位,置位后,除NMI与硬fault外,其他中断都不响应;FAULTMASK 单一比特位,置位后,除NMI外,其他中断都不响应;BASEPRI 共有9位,中断号小于等于该寄存器设置值的中断都不响应;控制寄存器controlControl[0] 0决定特权级线程模式;1用户级线程模式;Control[1] 0主堆栈;1进程堆栈;控制寄存器只能在特权级模式下改写,handler模式永远是特权级,且只允许使用主堆栈MSP 复位后,处理器进入特权级+线程模式下;2、地址功能划分映射Cortex-m3是一个32位处理器,其地址总线、数据总线都是32位的,故可在4G的地址范围上资源寻址。
寄存器实验报告
实验报告实验名称_______________姓名__________学号___________同组同学姓名__________学号__________实验日期______________实验完成日期______________1.实验题目名称:寄存器实验2.实验目的:1)掌握QuartusII 5.0软件的图形编辑、编译、仿真的设计流程。
2)学习74670三态输出寄存器堆的使用。
3)了解寄存器组的使用,设计出完善的寄存器组。
3.实验内容:设计出功能完善的寄存器组,并对设计的正确性进行验证。
具体要求如下:1)用图形方式设计出寄存器组的电路原理图。
2)测试波形要用时序仿真实现,现将不同的数据连续写入4个寄存器后,在分别读出。
3)将设计文件封装成器件符号。
4)数据的宽度最好为16位。
4.实验设计思想:在主机系统中,寄存器组用于暂存程序运行过程中所需要的各种数据。
可以采用具有三态功能的两片4位片的74LS760芯片进行设计。
构成4字*8位的寄存器组。
通用寄存器组的设计原理图如下:通用寄存器组的设计原理图5.芯片封装图通用寄存器组芯片封装图图中RA,RB输出控制管脚接收需要读出信息的通用寄存器地址,在RE读控制信号的作用下,输出相应寄存器中的数据到输出管脚Q0~Q7端。
WA,WB输入控制管脚接收需要写入信息的通用寄存器的地址,在WE写控制信号的作用下,把输入管脚D0~D7的输入数据写入到相应的寄存器中。
其通用寄存器的“写”“读”功能控制方式可参见表5-2,5-3.6.逻辑电路图6.实验结果:7.实验小结:1)实验过程中所遇到的问题及其分析:2)解决的方法:3)实验收获:4)对实验的意见和建议:。
寄存器分类——精选推荐
寄存器分类0008086有14个16位寄存器,这14个寄存器按其用途可分为(1)通用寄存器、(2)指令指针、(3)标志寄存器和(4)段寄存器等4类。
(1)通用寄存器有8个,又可以分成2组,一组是数据寄存器(4个),另一组是指针寄存器及变址寄存器(4个).顾名思义,通用寄存器是那些你可以根据自己的意愿使用的寄存器,修改他们的值通常不会对计算机的运行造成很大的影响。
数据寄存器分为:AH&AL=AX(accumulator):累加寄存器,常用于运算;在乘除等指令中指定用来存放操作数,另外,所有的I/O指令都使用这一寄存器与外界设备传送数据.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位寄存器可以分别寻址,并单独使用。
另一组是指针寄存器和变址寄存器,包括:SP(StackPointer):堆栈指针,与SS配合使用,可指向目前的堆栈位置;BP(BasePointer):基址指针寄存器,可用作SS的一个相对基址位置;SI(SourceIndex):源变址寄存器可用来存放相对于DS段之源变址指针;DI(DestinationIndex):目的变址寄存器,可用来存放相对于ES段之目的变址指针。
这4个16位寄存器只能按16位进行存取操作,主要用来形成操作数的地址,用于堆栈操作和变址运算中计算操作数的有效地址。
(2)指令指针IP(InstructionPointer)指令指针IP是一个16位专用寄存器,它指向当前需要取出的指令字节,当BIU从内存中取出一个指令字节后,IP就自动加1,指向下一个指令字节。
Cortex-M3体系结构学习笔记-寄存器知识
Cortex-M3体系结构学习笔记-寄存器知识要想了解Cortex-M3体系结构的知识,必须学习一下几个部分:CM3微处理器内核结构,处理器的工作模式及状态,寄存器,总线结构,存储器的组织与映射,指令集,流水线,异常和中断,存储器保护单元MPU。
这篇文章主要是我学习CM3机构寄存器的知识笔记。
Cortex‐M3 处理器拥有R0‐R15 的寄存器组。
其中 R13 作为堆栈指针SP。
SP 有两个,但在同一时刻只能有一个可以看到,这也就是所谓的“banked”寄存器。
CM3寄存器全局图如下所示:1. 通用寄存器通用寄存器包括R0-R12,R0-R7也被称为低组寄存器。
它们的字长全是32位的。
所有指令(包括 16位的和32位的)都能访问他们。
复位后的初始值是随机的。
R8-R12也被称为高组寄存器。
它们的字长也是32位的。
16位的Thumb指令不能访问他们,32位的Thumb-2指令则不受限制。
复位后的初始值也是随机的。
2.堆栈指针R13Cortex‐M3 拥有两个堆栈指针,然而它们是banked,因此任一时刻只能使用其中的一个。
•主堆栈指针(MSP):复位后缺省使用的堆栈指针,用于操作系统内核以及异常处理例程(包括中断服务例程)•进程堆栈指针(PSP):由用户的应用程序代码使用。
堆栈指针的最低两位永远是0,这意味着堆栈总是4 字节对齐的。
(在ARM 编程领域中,凡是打断程序顺序执行的事件,都被称为异常(exception)。
除了外部中断外,当有指令执行了“非法操作”,或者访问被禁的内存区间,因各种错误产生的fault,以及不可屏蔽中断发生时,都会打断程序的执行,这些情况统称为异常。
在不严格的上下文中,异常与中断也可以混用。
另外,程序代码也可以主动请求进入异常状态的(常用于系统调用).)在处理模式和线程模式下,都可以使用MSP,但只能在线程模式下使用PSP。
堆栈与微处理器模式的对应关系如下图所示。
使用两个堆栈的目的是为了防止用户堆栈的溢出影响系统核心代码(如操作系统内核)的运行。
累加器与通用寄存器组
1、在运算器中,累加器是专门存放算术或逻辑运算的一个操作数和运算结果的寄存器。
能进行加、减、读出、移位、循环移位和求补等操作。
累加器是通用寄存器之一,但累加器和其它通用寄存器相比又有其独特之处。
累加器除了可用做通用寄存器存放数据外,对某些操作,一般操作前累加器用于存放一个操作数,操作后,累加器用于存放结果。
在中央处理器CPU中,累加器(accumulator)是一种暂存器,它用来储存计算所产生的中间结果。
如果没有像累加器这样的存器,那么在每次计算(加法,乘法,移位等等)后就必须要把结果写回到内存,然后再读回来。
然而存取内存的速度是比从数学逻辑单元(ALU)到有直接路径的累加器存取更慢。
现今的CPU 通常有很多暂存器,所有或多数都可以被用来当作累加器。
因为这个原因,“累加器”这名词就显得有些老旧。
这个名词已经几乎不在微处理器暂存器中使用,2、通用寄存器可用于传送和暂存数据,也可参与算术逻辑运算,并保存运算结果。
除此之外,它们还各自具有一些特殊功能。
通用寄存器的长度取决于机器字长,如16位cpu 通用寄存器共有8个:AX,BX,CX,DX,BP,SP,SI,DI,八个寄存器都可以作为普通的数据寄存器使用。
但有的有特殊的用途:AX为累加器,CX为计数器,BX,BP为基址寄存器,SI,DI为变址寄存器,BP还可以是基指针,SP为堆栈指针。
32位cpu通用寄存器共有8个:EAX,EBX,ECX,EDX,EBP,ESP,ESI,EDI功能和上面差不多。
寄存器总结
首先先说8086在8086的EU--执行单元(Execution Unit)和BIU--总线接口单元(Bus Interface Unit)两部分中包含有一些工作寄存器,这些寄存器用来存放计算过程中的各种信息,如操作数地址、操作数及运算的中间结果等。
微处理器从寄存器中存取数据比从存储器中存取数据要快的多,因此,在计算过程中,合理利用寄存器保存操作数、中间结果或其它信息,能提高程序的运行效率。
根据这些寄存器所起的作用,8086寄存器组可以分为通用寄存器、专用寄存器和段寄存器三类@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@ @@@@@@@@@1.通用寄存器通用寄存器包括了8个16位的寄存器:AX、BX、CX、DX、SP、BP、DI及SI。
其中AX、BX、CX、DX在一般情况下作为通用的数据寄存器,用来暂时存放计算过程中所用到的操作数、结果或其他信息。
它们还可分为两个独立的8位寄存器使用,命名为AL、AH、BL、BH、CL、CH、DL和DH。
这4个通用数据寄存器除通用功能外,还有如下专门用途:AX作为累加器用,所以它是算术运算的主要寄存器。
在乘除指令中指定用来存放操作数。
另外,所有的I/O指令都使用AX或AL与外部设备传送信息。
BX在计算存储器地址时,可作为基址寄存器使用。
CX常用来保存计数值,如在移位指令、循环指令和串处理指令中用作隐含的计数器。
DX在作双字长运算时,可把DX和AX组合在一起存放一个双字长数,DX用来存放高16位数据。
此外,对某些I/O操作,DX可用来存放I/O的端口地址。
SP、BP、SI、DI四个16位寄存器可以象数据寄存器一样在运算过程中存放操作数,但它们只能以字(16位)为单位使用。
此外,它们更经常的用途是在存储器寻址时,提供偏移地址。
因此,它们可称为指针或变址寄存器。
SP称为堆栈指针寄存器,用来指出栈顶的偏移地址。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
计算机组成原理实验报告题目:运算器部件实验:通用寄存器组
学院数学与信息学院
学科门类工学
专业12软件工程
学号2012436138
姓名王赛赛
指导教师王兵
计算机组成原理实验报告
一、实验目的
1.了解通用寄存器组的用途及对CPU的重要性。
2.掌握通用寄存器的设计方法。
二、实验原理
通用寄存器组是CPU的重要组成部分。
通用寄存器组中的寄存器的数目与CPU性能有关,CPU性能越高,通用寄存器组内的寄存器数目越多。
由于计算逻辑运算需要两个操作数,因此通用寄存器组有两个读入端口,负责提供进行算术逻辑单元需要的元操作数和目的操作数。
通用寄存器组有1个写端口,负责将运算结构保存到指定的寄存器内。
三、实验要求
1.实验设计目标
设计一个通用寄存器组,满足以下要求:
(1)通用寄存器组中有4个16位的寄存器。
(2)当复位信号reset=0时,将通用寄存器组中的4个寄存器清零。
(3)通用寄存器组中有两个读出端口,当DRWr=1时,在始终clk的上升沿将数据总线上的数写入DR[1..0]指定的寄存器。
(4)通用寄存器组有两个读出接口,一个对应算术逻辑单元的目的的操作数DR,另一个对应算术逻辑单元的源操作数SR。
DR[1..0]选择目的的操作数;SR[1..0]选择源操作数。
(5)设计要求层次设计。
底层的设计实体有3个:16位寄存器,具有复位功能和允许写功能;一个2-4译码器,对应寄存器写选择;一个4选1多路开光,负责选择寄存器的读出。
顶层设计构成一个完整的通用寄存器组。
2.顶层设计实体的引脚要求
引脚要求对应关系如下:
(1)clk对应实验台上的时钟(单脉冲)。
(2)reset对应实验台上的CPU复位信号CPU_RST.
(3)SR[1..0]对应试验台开关SA1,SA0。
(4)DR[1..0]对应试验台开关SR3,SR2。
(5)DRWr对应实验台上开关SA5。
(6)目的操作数用试验台上的指示灯A~A显示,源操作数用试验台上的指示灯
R15~R0显示。
四、实验步骤
1.将试验台设置成FPGA-CPU独立调试模式,REGSEL=0,CLKSEL=1,FDSEL=0,使
用试验台上的单脉冲,即STEP_CLK段路子短接,短路子RUN_CLK断开。
2.将设计在Quartus2下输入,编译后下载到TEC-CA上的FPGA。
3.将下列数据存入寄存器:
R0OX3333
R1OX5555
R2OXAAAA
R3OXFFFF
4. 在实验台指示灯A15~A0和R15~R0上观察各寄存器的值,填入表中。
五、实验结果
六、思考
实验中需要一个2-4译码器和2个四选一多路器,认真理解实验的原理,仔细完成实验的过程。
如果通用寄存器组中要求有8个16位通用寄存器,则应用一个3-8译码器和两个八选一多路器,其他类似于4个的。
七、实验代码
library IEEE;
use IEEE.STD_LOGIC_1164.ALL;
entity regfile is
Port ( DR: in std_logic_vector(1 downto 0);
SR: in std_logic_vector(1 downto 0);
reset: in std_logic;
DRWr: in std_logic;
clk: in std_logic;
d_input: in std_logic_vector(15 downto 0);
DR_data: out std_logic_vector(15 downto 0);
SR_data: out std_logic_vector(15 downto 0)
);
end regfile;
architecture struct of regfile is
-- components
-- 16 bit Register for register file
component reg
port (
clr: in std_logic;
D: in std_logic_vector(15 downto 0);
clock: in std_logic;
write: in std_logic;
sel: in std_logic;
Q: out std_logic_vector(15 downto 0)
);
end component;
-- 2 to 4 Decoder
component decoder_2_to_4
port(
sel: in std_logic_vector(1 downto 0);
sel00: out std_logic;
sel01: out std_logic;
sel02: out std_logic;
sel03: out std_logic
);
end component;
-- 4 to 1 line multiplexer
component mux_4_to_1
port (
input0,
input1,
input2,
input3: in std_logic_vector(15 downto 0);
sel: in std_logic_vector(1 downto 0);
out_put: out std_logic_vector(15 downto 0));
end component;
signal reg00, reg01, reg02, reg03
:std_logic_vector(15 downto 0);
signal sel00 ,sel01 ,sel02 ,sel03
: std_logic;
begin
Areg00: reg port map(
clr => reset,
D => d_input ,
clock => clk ,
write => DRWr ,
sel => sel00 ,
Q => reg00
);
Areg01: reg port map(
clr => reset,
D => d_input ,
clock => clk ,
write => DRWr ,
sel => sel01 ,
Q => reg01
);
Areg02: reg port map(
clr => reset,
D => d_input ,
clock => clk ,
write => DRWr ,
sel => sel02 ,
Q => reg02
);
Areg03: reg port map(
clr => reset,
D => d_input ,
clock => clk ,
write => DRWr ,
sel => sel03 ,
Q => reg03
);
-- decoder
des_decoder: decoder_2_to_4 port map (
sel => DR,
sel00 => sel00 ,
sel01 => sel01 ,
sel02 => sel02 ,
sel03 => sel03
);
mux1: mux_4_to_1 PORT MAP(
Input0 => reg00 ,
Input1 => reg01 ,
Input2 => reg02 ,
Input3 => reg03 ,
sel => DR ,
out_put => DR_data
);
mux2: mux_4_to_1 PORT MAP( input0 => reg00 ,
input1 => reg01 ,
input2 => reg02 ,
input3 => reg03 ,
sel => SR ,
out_put => SR_data
);
end struct;。