当前位置:文档之家› 通用寄存器的作用

通用寄存器的作用

通用寄存器的作用
通用寄存器的作用

通用寄存器的作用

数据寄存器不讲,简单的说,段寄存器(ES,CS,SS,DS,FS,GS)和变址寄存器(SI,DI)是配合使用访问段数据的,指针寄存器(BP,SP)是用来操作堆栈的,BP指向栈的基址,SP则永远指向栈顶。

另外指令指针EIP存放的是要执行的下一条指令在代码段里的偏移量,在实方式下,每个段的最大范围都是64K,所以EIP的高16位都是0。

寄存器的分类寄存器主要用途

通用寄存器

数据

寄存器

AX 乘、除运算,字的输入输出,中间结果的缓存

AL 字节的乘、除运算,字节的输入输出,十进制算术运算

AH 字节的乘、除运算,存放中断的功能号

BX 存储器指针

CX 串操作、循环控制的计数器

CL 移位操作的计数器

DX 字的乘、除运算,间接的输入输出

变址

寄存器

SI 存储器指针、串指令中的源操作数指针

DI 存储器指针、串指令中的目的操作数指针

变址

寄存器

BP 存储器指针、存取堆栈的指针

SP 堆栈的栈顶指针

指令指针IP/EIP

标志位寄存器Flag/EFlag

32位CPU的段寄存器16位CPU的

段寄存器

ES 附加段寄存器

CS 代码段寄存器

SS 堆栈段寄存器

DS 数据段寄存器新增加的

段寄存器

FS 附加段寄存器

GS 附加段寄存器

---------------------------------

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位寄存器更具有通用性。详细内容请见第3.8节——32位地址的寻址方式。

2、变址寄存器

32位CPU有2个32位通用寄存器ESI和EDI。其低16位对应先前CPU中的SI 和DI,对低16位数据的存取,不影响高16位的数据。

寄存器ESI、EDI、SI和DI称为变址寄存器(Index Register),它们主要用于存放存储单元在段内的偏移量,用它们可实现多种存储器操作数的寻址方式(在第3章有详细介绍),为以不同的地址形式访问存储单元提供方便。

变址寄存器不可分割成8位寄存器。作为通用寄存器,也可存储算术逻辑运算的操作数和运算结果。

它们可作一般的存储器指针使用。在字符串操作指令的执行过程中,对它们有特定的要求,而且还具有特殊的功能。具体描述请见第5.2.11节。

3、指针寄存器

32位CPU有2个32位通用寄存器EBP和ESP。其低16位对应先前CPU中的SBP 和SP,对低16位数据的存取,不影响高16位的数据。

寄存器EBP、ESP、BP和SP称为指针寄存器(Pointer Register),主要用于存放堆栈内存储单元的偏移量,用它们可实现多种存储器操作数的寻址方式(在第3章有详细介绍),为以不同的地址形式访问存储单元提供方便。

指针寄存器不可分割成8位寄存器。作为通用寄存器,也可存储算术逻辑运算的操作数和运算结果。

它们主要用于访问堆栈内的存储单元,并且规定:

BP为基指针(Base Pointer)寄存器,用它可直接存取堆栈中的数据;

SP为堆栈指针(Stack Pointer)寄存器,用它只可访问栈顶。

4、段寄存器

段寄存器是根据内存分段的管理模式而设置的。内存单元的物理地址由段寄存器的值和一个偏移量组合而成的,这样可用两个较少位数的值组合成一个可访问较大物理空间的内存地址。

CPU内部的段寄存器:

CS——代码段寄存器(Code Segment Register),其值为代码段的段值;

DS——数据段寄存器(Data Segment Register),其值为数据段的段值;

ES——附加段寄存器(Extra Segment Register),其值为附加数据段的段值;

SS——堆栈段寄存器(Stack Segment Register),其值为堆栈段的段值;

FS——附加段寄存器(Extra Segment Register),其值为附加数据段的段值;

GS——附加段寄存器(Extra Segm ent Register),其值为附加数据段的段值。

在16位CPU系统中,它只有4个段寄存器,所以,程序在任何时刻至多有4个正在使用的段可直接访问;在32位微机系统中,它有6个段寄存器,所以,在此环境下开发的程序最多可同时访问6个段。

32位CPU有两个不同的工作方式:实方式和保护方式。在每种方式下,段寄存器的作用是不同的。有关规定简单描述如下:

实方式:前4个段寄存器CS、DS、ES和SS与先前CPU中的所对应的段寄存器的含义完全一致,内存单元的逻辑地址仍为“段值:偏移量”的形式。为访问某内存段内的数据,必须使用该段

寄存器和存储单元的偏移量。

保护方式:在此方式下,情况要复杂得多,装入段寄存器的不再是段值,而是称为“选择子”(Selector)的某个值。段寄存器的具体作用在此不作进一步介绍了,有兴趣的读者可参阅其它科技资料。

5、指令指针寄存器

32位CPU把指令指针扩展到32位,并记作EIP,EIP的低16位与先前CPU中的IP作用相同。

指令指针EIP、IP(Instruction Pointer)是存放下次将要执行的指令在代码段的偏移量。在具有预取指令功能的系统中,下次要执行的指令通常已被预取到指令队列中,除非发生转移情况。所以,在理解它们的功能时,不考虑存在指令队列的情况。

在实方式下,由于每个段的最大范围为64K,所以,EIP中的高16位肯定都为0,此时,相当于只用其低16位的IP来反映程序中指令的执行次序。

2.7 int 10h bois中断说明

INT 10H 是由BIOS 对屏幕及显示器所提供的服务程序,而后倚天公司针对倚天中文提供了许多服务程序,这些服务程序也加挂在INT 10H 内。使用INT 10H 中断服务程序时,先指定AH 寄存器为下表编号其中之一,该编号表示欲调用的功用,而其他寄存器的详细说明,参考表后文字,当一切设定好之后再调用INT 10H。底下是它们的说明:

AH功能调用参数返回参数/ 注释

1 置光标类型(CH)0―3 = 光标开始行(CL)0―3 = 光标结束行

2 置光标位置BH = 页号DH = 行DL = 列

3 读光标位置BH = 页号CH = 光标开始行CL = 光标结束行DH = 行

DL = 列

4 置显示页AL = 显示页号

5 屏幕初始化或上卷

6 屏幕初始化或上卷AL = 上卷行数

AL =0全屏幕为空白BH = 卷入行属性CH = 左上角行号CL = 左上角列号DH = 右下角行号DL = 右下角列号

7 屏幕初始化或下卷AL = 下卷行数

AL = 0全屏幕为空白BH = 卷入行属性CH = 左上角行号CL = 左上角列号DH = 右下角行号DL = 右下角列号

8

读光标位置的属性

和字符

BH = 显示页

AH = 属性

AL = 字符

9

在光标位置显示字

符及其属性

BH = 显示页

AL = 字符

BL = 属性

CX = 字符重复次数

A

在光标位置只显示

字符

BH = 显示页

AL = 字符

CX = 字符重复次数

E

显示字符(光标前

移)

AL = 字符

BL = 前景色

光标跟随字符移动

13 显示字符串ES:BP = 串地址

CX = 串长度

DH,DL = 起始行列BH = 页号

AL = 0,BL = 属性

串:Char,char,……,char

AL = 1,BL = 属性

串:Char,char,……,char

AL = 2

串:Char,attr,……,char,attr AL = 3

串:Char,attr,……,char,attr 光标返回起始位置光标跟随移动

光标返回起始位置光标跟随串移动

实验二通用寄存器单元实验

实验二通用寄存器单元实验 2014.4.29 班级12级物联网工程(1)班学号姓名 【实验目的】 1.了解通用寄存器的组成和硬件电路。 2.利用通用寄存器实现数据的置数、左移、右移等功能。 【实验要求】 1.按照实验步骤完成实验项目,实现通用寄存器移位操作。 2.了解通用寄存器单元的工作原理运用。 【实验过程】 实验2.1 数据输入通用寄存器 (1).把RA-IN(8芯的盒型插座)与CPT-B板上的二进制开关单元中J01插座相连(对应二进制开关H16~H23),把RA-OUT(8芯的盒型插座)与数据总线上的DJ6相连。 (2).把RACK连到脉冲单元的PLS1,把ERA、X0、X1、RA-O、M接入二进制拨动开关。(请按下表接线)。 (3).二进制开关H16~H23作为数据输入,置42H(对应开关如下表)。 置各控制信号如下: (4).按启停单元中的运行按钮,置平台为运行状态。 (5).按脉冲单元中的PLS1脉冲按键,在RACK上产生一个上升沿,把42H打入通用寄存器。 (6).此时数据总线上的指示灯IDB0~IDB7 应该显示为42H。由于通用寄存器内容不为0,所以LED(ZD)灯灭。

实验2.2 寄存器内容无进位位左移实验 (1)按照实验1数据输入的方法把数据42H打入通用寄存器中,数据总线上显示42H。 (2)实现左移功能,置各控制信号如下: (3)按启停单元中的运行按钮,置实验平台为运行状态。 (4)按脉冲单元中的PLS1脉冲按键,在RACK上产生一个上升沿,使通用寄存器中的值左移。 (5)此时数据总线上的LED指示灯IDB0~IDB7 应该显示为84H。由于通用寄存器内容不为0,所以ZD(LED)灯灭。 (6)按脉冲单元中的PLS1脉冲按键,使通用寄存器中的值左移,此时数据总线上的LED指示灯IDB0~IDB7应该显示为09H。若一直按PLS1,在总线上将看见数据循环左移的现象。 实验2.3 寄存器内容无进位位右移实验 (1)按照实验1数据输入的方法把数据42H打入通用寄存器中,数据总线上显示42H。 (2)实现右移功能,置各控制信号如下: (3)按启停单元中的运行按钮,置实验平台为运行状态。 (4)按脉冲单元中的PLS1脉冲按键,在RACK上产生一个上升沿,使通用寄存器中的值右移。 (5)此时数据总线上的LED指示灯IDB0~IDB7 应该显示为21H。由于通用寄存器内容不为0,所以ZD(LED)灯灭。 (6)按脉冲单元中的PLS1脉冲按键,使通用寄存器中的值右移,此时数据总线上的LED指示灯IDB0~IDB7应该显示为90H。若一直按PLS1,在总线上将看见数据循环左移的现象。 附:通用寄存器的逻辑 通用寄存器(8位并入并出移位寄存器) 【实验结果】

寄存器(register)

寄存器 Scope of register: 寄存器是CPU内部用来存放数据的一些小型存储区域,用来暂时存放参与运算的数据和运算结果。其实寄存器就是一种常用的时序逻辑电路,但这种时序逻辑电路只包含存储电路。寄存器的存储电路是由锁存器或触发器构成的,因为一个锁存器或触发器能存储1位二进制数,所以由N个锁存器或触发器可以构成N位寄存器。寄存器是中央处理器内的组成部份。寄存器是有限存贮容量的高速存贮部件,它们可用来暂存指令、数据和位址。在中央处理器的控制部件中,包含的寄存器有指令寄存器(IR)和程序计数器(PC)。在中央处理器的算术及逻辑部件中,包含的寄存器有累加器(ACC)。 1、寄存器- 特点及原理 寄存器又分为内部寄存器与外部寄存器,所谓内部寄存器,其实也是一些小的存储单元,也能存储数据。但同存储器相比,寄存器又有自己独有的特点: ①寄存器位于CPU内部,数量很少,仅十四个; ②寄存器所能存储的数据不一定是8bit,有一些寄存器可以存储16bit数据,对于386/486处理器中的一些寄存器则能存储32bit数据; ③每个内部寄存器都有一个名字,而没有类似存储器的地址编号。 寄存器的功能十分重要,CPU对存储器中的数据进行处理时,往往先把数据取到内部寄存器中,而后再作处理。外部寄存器是计算机中其它一些部件上用于暂存数据的寄存器,它与CPU之间通过“端口”交换数据,外部寄存器具有寄存器和内存储器双重特点。有些时候我们常把外部寄存器就称为“端口”,这种说法不太严格,但经常这样说。 外部寄存器虽然也用于存放数据,但是它保存的数据具有特殊的用途。某些寄存器中各个位的0、1状态反映了外部设备的工作状态或方式;还有一些寄存器中的各个位可对外部设备进行控制;也有一些端口作为CPU同外部设备交换数据的通路。所以说,端口是CPU和外设间的联系桥梁。CPU对端口(Ports)的访问也是依据端口的“编号”(地址),这一点又和访问存储器一样。不过考虑到机器所联接的外设数量并不多,所以在设计机器的时候仅安排了1024个端口

计算机组成原理实验报告

实验1 通用寄存器实验 一、实验目的 1.熟悉通用寄存器的数据通路。 2.了解通用寄存器的构成和运用。 二、实验要求 掌握通用寄存器R3~R0的读写操作。 三、实验原理 实验中所用的通用寄存器数据通路如下图所示。由四片8位字长的74LS574组成R1 R0(CX)、R3 R2(DX)通用寄存器组。图中X2 X1 X0定义输出选通使能,SI、XP控制位为源选通控制。RWR为寄存器数据写入使能,DI、OP为目的寄存器写选通。DRCK信号为寄存器组打入脉冲,上升沿有效。准双向I/O输入输出端口用于置数操作,经2片74LS245三态门与数据总线相连。 图2-3-3 通用寄存器数据通路

四、实验内容 1.实验连线 2.寄存器的读写操作 ①目的通路 当RWR=0时,由DI、OP编码产生目的寄存器地址,详见下表。 通用寄存器“手动/搭接”目的编码 ②通用寄存器的写入 通过“I/O输入输出单元”向R0、R1寄存器分别置数11h、22h,操作步骤如下: 通过“I/O输入输出单元”向R2、R3寄存器分别置数33h、44h,操作步骤如下: ③源通路 当X2~X0=001时,由SI、XP编码产生源寄存器,详见下表。 通用寄存器“手动/搭接”源编码

④通用寄存器的读出 五、实验心得 通过这个实验让我清晰的了解了通用寄存器的构成以及通用寄存器是如何运用的,并且熟悉了通用寄存器的数据通路,而且还深刻的掌握了通用寄存器R3~R0的读写操作。

实验2 运算器实验 一、实验目的 掌握八位运算器的数据传输格式,验证运算功能发生器及进位控制的组合功能。 二、实验要求 完成算术、逻辑、移位运算实验,熟悉ALU运算控制位的运用。 三、实验原理 实验中所用的运算器数据通路如图2-3-1所示。ALU运算器由CPLD描述。运算器的输出FUN经过74LS245三态门与数据总线相连,运算源寄存器A和暂存器B的数据输入端分别由2个74LS574锁存器锁存,锁存器的输入端与数据总线相连,准双向I/O输入输出端口用来给出参与运算的数据,经2片74LS245三态门与数据总线相连。 图2-3-1运算器数据通路 图中AWR、BWR在“搭接态”由实验连接对应的二进制开关控制,“0”有效,通过【单拍】按钮产生的脉冲把总线上的数据打入,实现运算源寄存器A、暂存器B的写入操作。 四、实验内容 1.运算器功能编码 表2.3.1 ALU运算器编码表 算术运算逻辑运算 K15 K13 K12 K11 功能K15 K13 K12 K11 功能 M S2 S1 S0 M S2 S1 S0 0 0 0 0 A+B+C 1 0 0 0 B 0 0 0 1 A—B—C 1 0 0 1 /A 0 0 1 0 RLC 1 0 1 0 A-1 0 0 1 1 RRC 1 0 1 1 A=0

寄存器简单理解

GPIOB_BASE是一个地址,这个地址是GPIOB一系列寄存器的首地址,后面地址依次是GPIOB 的寄存器,将这个地址转换为结构体形式,并将后面寄存器按顺序定义在结构体里面,这样访问寄存器就可以通过引用结构体的形式了而不必书写寄存器的地址来访问寄存器。 寄存器用途: 1.可将寄存器内的数据执行算术及逻辑运算; 2.存于寄存器内的地址可用来指向内存的某个位置,即寻址; 3.可以用来读写数据到电脑的周边设备。 AX 累加器,得名原因是最初常使用ADD AX,n这样的指令 CX 计数器,得名原因是最常使用CX的值作为重复操作的次数 BX 常用作地址寄存器,如MOV AX,[BX],把BX所指地址中的数取到AX中去 DX 通用寄存器 所讲的寄存器都是以x86为基础的,那么这种CPU内,寄存器可分为以下几种: 1.EAX、EBX、ECX、EDX等通用寄存器——从通用上来讲,它所存储的东西,只要它的容积所容许的话,什么都是可以存储的; 2.CS、SS、ES等段寄存器——它所存储的只能是地址,它的作用是从寻址上可以体现出来; 3.EIP,也称为指令指针 4.EFLAGS寄存器,俗称为标志寄存器——所存储的是与CPU的每一个执行的指令有关。是关系到CPU每一个指令的执行相关内容与特殊的关联,即CPU所执行的指令是否违规,它的指令是否有进位,它的指令是否有溢出,都是在标志寄存器中能表现与表达出来; 5.浮点单元,这里面之所以只浮点单元,是因为在它里面还有一些小的寄存分类,主要是数学上的浮点上的计算 6.MMX指令使用的8个64位寄存器 7.单指令、多数据操作(SIMD,single-instruction,multiple-data)使用的8个128位XMM寄存器

计算机组成原理实验报告 通用寄存器单元实验

西华大学数学与计算机学院实验报告 课程名称:计算机组成原理年级:2011级实验成绩: 指导教师:祝昌宇姓名:蒋俊 实验名称:通用寄存器单元实验学号:312011*********实验日期:2013-12-15 一、目的 1.了解通用寄存器的组成和硬件电路 2. 利用通用寄存器实现数据的置数、左移、右移等功能 二、实验原理 (1)寄存器实验构成 1、通用寄存器由2片GAL构成8位字长的寄存器单元。8芯插座RA-IN作为数据输入端,可通过端8芯扁平电缆,把数据数据输入端连接到数据总线上。 2、数据输出由一片74LS244(输出缓冲器)来控制。用8芯插座RA-OUT作为数据输出端,可通过端8芯扁平电缆,把数据数据输出端连接到数据总线上。 3、判零和进位电路由1片GAL、1片7474和一些常规芯片组成,用2个LED(ZD、CY)发光管分别显示其状态。 (2)通用寄存器单元的工作原理 通用寄存器的核心部件为2片GAL,它具有锁存、左移、右移、保存等功能。各个功能都由X1、X2信号和工作脉冲RACK来决定。当置ERA=0、X0=1、X1=1,RACK有上升沿时,把总线上的数据打入通用寄存器。可通过设置X1、X0来指定通用寄存器工作方式,通用寄存器的输出端Q0~Q7接入判零电路。LED(ZD)亮时,表示当前通用寄存器内数据为0。 输出缓冲器采用74LS244,当控制信号RA-O为低时,74LS244开通,把通用寄存器内容输出到总线;当控制信号RA-O为高时,74LS244的输出为高阻。 图1 通用寄存器原理图 三、使用环境 计算机组成原理实验箱 四、实验步骤

(一)数据输入通用寄存器 1.把RA-IN(8芯的盒型插座)与CPT-B板上二进制开关单元中的J1插座相连(对应二进制开关H16~H23),把RA-OUT(8芯的盒型插座)与数据总线上的DJ6相连。 2.把RACK连到脉冲单元的PLS1,把ERA、X0、X1、RA-0、M接入二进制拨动开关。请按下表接线。 信号定义接入开关位号 RACK PLS1孔 X0 H12孔 X1 H11孔 ERA H10孔 RA-O H9孔 M H4孔 3.二进制开关H16~H23作为数据输入,置42H(对应开关如下表) H23 H22 H21 H20 H19 H18 H17 H16 数据总线值 D7 D6 D5 D4 D3 D2 D1 D0 8位数据 0 1 0 0 0 0 1 0 42H 置各控制信号如下: H12 H11 H10 H9 H4 X0 X1 ERA RA-O M 1 1 0 0 1 4.按启停单元中的有效按钮,置实验机为运行状态。 5.按脉冲单元中的PLS1脉冲按键,在RACK上产生一个上升沿,把42H打入通用寄存器。 $ 此时数据总线上的指示灯IDB0~IDB7显示为42H。由于通用寄存器内容不为0,所以ZD (LED)灯灭。 (二)寄存器内容无进位位左移 1.把42H打入通用寄存器中,数据总线上显示42H。 2.实现左移功能,置各控制信号如下: H12 H11 H10 H9 H4 X0 X1 ERA RA-O M 1 1 0 0 1 3.按启停单元中的有效按钮,置实验机为运行状态。 4.按脉冲单元中的PLS1脉冲按键,在RACK上产生一个上升沿,使通用寄存器的值左移。 $ 此时数据总线上的LED指示灯IDB0~IDB7应该显示为84H。由于通用寄存器内容不为0,所以ZD (LED)灯灭。 5.按脉冲单元中的PLS1脉冲按键,使通用寄存器的值左移,此时数据总线上的LED指示灯IDB0~IDB7显示为09H。若一直按PLS1,在总线上看见数据循环左移的现象。

ARM寄存器详解

ARM 处理器有二十七个寄存器,其中一些是在一定条件下使用的,所以一次只能使用十六 个。 R0~R7:是通用寄存器并可以用做任何目的。 R8~R12:是通用寄存器,但是在切换到FIQ模式的时候,使用它们的影子(shadow)寄存器。 R13:被称为栈指针寄存器,常用来保存栈指针。 R14:链接寄存器,常用来保存函数返回地址 R15:是程序指针PC CPSR:(Current Program Status Register)当前程序状态寄存器,CPSR 寄存期保存当前程序运行的状态。 0 0 0 0 0 User26 模式 0 0 0 0 1 FIQ26 模式 0 0 0 1 0 IRQ26 模式 0 0 0 1 1 SVC26 模式 1 0 0 0 0 User 模式 1 0 0 0 1 FIQ 模式 1 0 0 1 0 IRQ 模式 1 0 0 1 1 SVC 模式 1 0 1 1 1 ABT 模式 1 1 0 1 1 UND 模式

ARM寻址方式 1.立即数寻址 ARM 指令的立即数寻址是一种特殊的寻址方式,操作数本身就在指令中给出,只要取出指令也就取到了操作数。这个操作数被称为立即数。ADD R0,R0,#1 ;R0←R0 + 1 ADD R0,R0,#0x3A ;R0←R0 + 0x3A 在以上 2 条指令中,第2个源操作数即为立即数,实际使用时以“#”符

号为前缀。 2.寄存器寻址 寄存器寻址就是利用寄存器中的数值作为操作数,这种寻址方式是各类微处理器经常采 用的一种方式,也是一种执行效率较高的寻址方式。如以下的指令。 ADD R0,R1,R2 ;R0←R1 + R2 该指令的执行效果是将寄存器R1和R2的内容相加,其结果存放在寄存器R0中。 3.寄存器间接寻址 寄存器间接寻址就是以寄存器中的值作为操作数的地址,而操作数本身存放在存储器 中。例如以下指令。 ADD R0,R1,[R2] ;R0←R1 + [R2] LDR R0,[R1] ;R0←[R1] 在第1 条指令中,以寄存器R2 的内容作为操作数的地址,然后与R1相加,其结果存入 寄存器R0中。 第2条指令将以 R1 的值为地址的存储器中的内容送到寄存器R0中。 4.基址变址寻址 基址变址的寻址方式就是将寄存器(该寄存器一般称作基址寄存器)的内容与指令中给 出的地址偏移量相加,从而得到一个操作数的有效地址。如下面的几条指令所示。 LDR R0,[R1,#0x0A] ;R0←[R1 + 0x0A] LDR R0,[R1,#0x0A]!;R0←[R1 + 0x0A]、R1←R1 + 0x0A 在第1条指令中,将寄存器R1 的内容加上0x3A 形成操作数的有效地址,将该地址处的 操作数送到寄存器R0中。 在第2条指令中,将寄存器R1的内容加上0x0A形成操作数的有效地址,从而取得操作数存入寄存器R0中,然后,R1的内容自增0x0A个字节。 5.多寄存器寻址 采用多寄存器寻址方式,一条指令可以完成多个寄存器值的传送。这种寻址方式可以用 一条指令完成传送最多 16 个通用寄存器的值。比如下面的指令。LDMIA R0,{R1,R2,R3,R4} ;R1←[R0] ;R2←[R0 + 4]

实验二 通用寄存器实验

实验二通用寄存器实验 一、实验目的 1.熟悉通用寄存器的数据通路。 2.了解通用寄存器的构成和运用。 二、实验要求 掌握通用寄存器R3~R0的读写操作。 三、实验原理 实验中所用的通用寄存器数据通路如下图所示。由四片8位字长的74LS574组成R1 R0(CX)、R3 R2(DX)通用寄存器组。图中X2 X1 X0定义输出选通使能,SI、XP控制位为源选通控制。RWR为寄存器数据写入使能,DI、OP为目的寄存器写选通。DRCK信号为寄存器组打入脉冲,上升沿有效。准双向I/O输入输出端口用于置数操作,经2片74LS245三态门与数据总线相连。 图2-3-3 通用寄存器数据通路

四、实验内容 1. 实验连线 K23~K0置“1”,灭M23~M0控位显示灯。然后按下表要求“搭接”部件控制电路。 连线 信号孔 接入孔 作用 有效电平 1 DRCK CLOCK 单元手动实验状态的时钟来源 上升沿打入 2 X2 K10(M10) 源部件译码输入端X2 三八译码 八中选一 低电平有效 3 X1 K9(M9) 源部件译码输入端X1 4 X0 K8(M8) 源部件译码输入端X0 5 XP K7(M7) 源部件奇偶标志:0=偶寻址,1=奇寻址 6 SI K20(M20) 源寄存器地址:0=CX ,1=DX 7 RWR K18(M18) 通用寄存器写使能 低电平有效 8 DI K17(M17) 目标寄存器地址:0=CX ,1=DX 9 OP K16(M16) 目标部件奇偶标志:0=偶寻址,1=奇寻址 2. 寄存器的读写操作 ① 目的通路 当RWR=0时,由DI 、OP 编码产生目的寄存器地址,详见下表。 通用寄存器“手动/搭接”目的编码 目标使能 通用寄存器目的编址 功能说明 RW(K18) DI(K17) OP(K16) T 0 0 0 ↑ R0写 0 0 1 ↑ R1写 0 1 0 ↑ R2写 0 1 1 ↑ R3写 ② 通用寄存器的写入 通过“I/O 输入输出单元”向R0、R1寄存器分别置数27h 、37h ,操作步骤如下: 通过“I/O 输入输出单元”向R2、R3寄存器分别置数47h 、57h ,操作步骤如下: ③ 源通路 当X2~X0=001时,由SI 、XP 编码产生源寄存器,详见下表。 通用寄存器“手动/搭接”源编码 置数 I/O=XX01h 数据来源 I/O 单元 寄存器 R0=01h K10~K7=1000 按【单拍】按钮 置数 I/O=XX11h 寄存器 R1=11h 按【单拍】按钮 K18~K16=000 K18~K16=001 置数 I/O=XX21h 数据来源 I/O 单元 寄存器 R2=21h K10~K7=1000 按【单拍】按钮 置数 I/O=XX31h 寄存器 R3=31h 按【单拍】按钮 K18~K16=010 K18~K16=011

计算机组成原理实验报告

计算机组成原理课程设计 报告 指导教师: 班级: 姓名: 学号:

一、目的和要求 1.实验目的: 深入了解计算机各种指令的执行过程,以及控制器的组成,指令系统微程序设计的具体知识,进一步理解和掌握动态微程序设计的概念;完成微程序控制的特定功能计算机的指令系统设计和调试。 2、实验要求: 要进行这项大型实验,必须清楚地懂得: (1)TEC-2机的功能部件及其连接关系; (2)TEC-2机每个功能部件的功能与具体组成; (3)TEC-2机支持的指令格式; (4)TEC-2机的微指令格式,AM2910芯片的用法; (5)已实现的典型指令的执行实例,即相应的微指令与其执行次序的安排与衔接; (6)要实现的新指令的格式与功能。 二、实验环境 PC机模拟TEC-2机 三、具体内容 一、实验内容: 选定指令格式、操作码,设计如下指令: (1)把用绝对地址表示的内存单元ADDR1中的内容与内存单元ADDR2中的内容相减,结果存于内存单元ADDR3中。 指令格式:D4××,ADDR1,ADDR2, ADDR3 四字指令(控存入口100H) 功能: [ADDR3]=[ADDR1]-[ADDR2] (2)将一通用寄存器内容减去某内存单元内容,结果放在另一寄存器中。 指令格式:E0 DR SR,ADDR (SR,DR源、目的寄存器各4位)双字指令(控存入口130H) 功能: DR=SR+ [ADDR] (3)转移指令。判断两个通用寄存器内容是否相等,若相等则转移到指定绝对地址,否则顺序执行。 指令格式:E5 DR SR,ADDR 双字指令(控存入口140H) 功能: if DR==SR goto ADDR else 顺序执行。 设计:利用指令的CND字段,即IR10~8,令IR10~8=101,即CC=Z 则当DR==SR时Z=1,微程序不跳转,接着执行MEM PC(即ADDR PC) 而当DR!=SR时Z=0,微程序跳转至A4。 二、实验要求: (1)根据内容自行设计相关指令微程序;(务必利用非上机时间设计好微程序) (2)设计测试程序、实验数据并上机调试。 (3)设计报告内容:包括1、设计目的2、设计内容3、微程序设计(含指令格式、功能、设计及微程序) 4、实验数据(测试所设计指令的程序及结果)。(具体要求安最新规范为准) (4)课程设计实验报告必须打印成册,各班班长收齐大型实验报告于18周星期六下午(15:00)前,交张芳老师办公室。 四、实验程序与分析: (一).把用绝对地址表示的内存单元ADDR1中的内容与内存单元ADDR2中的内容相减,结果存于内存单元ADDR3中。 指令格式:D4××,ADDR1,ADDR2, ADDR3 四字指令(控存入口100H)

《计算机组成原理》典型例题讲解

分析设计计算: 1.CPU 结构如图1所示,其中有一个累加寄存器AC ,一个状态条件寄存器,各部分之间的连线表示数据通路,箭头表示信息传送方向。 (1) 标明图中四个寄存器的名称。 (2) 简述指令从主存取到控制器的数据通路。 (3) 简述数据在运算器和主存之间进行存 / 取访问的数据通路。 图1 解: (1) a 为数据缓冲寄存器 DR ,b 为指令寄存器 IR ,c 为主存地址寄存器, d 为程序计数器PC 。 (2) 主存 M →缓冲寄存器 DR →指令寄存器 IR →操作控制器。 (3) 存贮器读 :M →缓冲寄存器DR →ALU →AC 存贮器写 :AC →缓冲寄存器DR →M 2. 某机器中,配有一个ROM 芯片,地址空间0000H —3FFFH 。现在再用几个16K ×8的芯片构成一个32K ×8的RAM 区域,使其地址空间为8000H —FFFFH 。假设此RAM 芯片有/CS 和/WE 信号控制端。CPU 地址总线为A15—A0,数据总线为D7—D0,控制信号为R//W ,MREQ(存储器请求),当且仅当MREQ 和R//W 同时有效时,CPU 才能对有存储器进行读(或写)。 (1)满足已知条件的存储器,画出地址码方案。 (2)画出此CPU 与上述ROM 芯片和RAM 芯片的连接图。 解:存储器地址空间分布如图1所示,分三组,每组16K ×8位。 由此可得存储器方案要点如下: (1) 用两片16K*8 RAM 芯片位进行串联连接,构成32K*8的RAM 区域。 片内地址 :A 0 ——A 13 ,片选地址为:A 14——A 15; (2) 译码使用2 :4 译码器; (3) 用 /MREQ 作为2 :4译码器使能控制端,该信号低电平(有效) 时,译码器工作。

arm通用寄存器及其别名

AMR寄存器的别名+ APCS 默认情况下,arm处理器中的通用寄存器被称为:r0、r1...r14等,在APCS中为arm通用寄存器定义了别名。 在某些情况下(比如多人协作编辑汇编代码,或需要修改其它人所写的汇编代码时),使用APCS所定义的别名有助于提高代码的可读性和兼容性。 arm通用寄存器及其别名对照表:

The following register names are predeclared: r0-r15 and R0-R15 a1-a4 (argument, result, or scratch registers, synonyms for r0 to r3) v1-v8 (variable registers, r4 to r11) sb and SB (static base, r9) ip and IP (intra-procedure-call scratch register, r12) sp and SP (stack pointer, r13) lr and LR (link register, r14) pc and PC (program counter, r15). arm中r12的用途 原文作者在维护1个以前的程序,该程序包括应用、库文件以及linux device driver。该程序原来使用arm-linux-gcc 3.4.3编译,现在改用arm-linux-gcc 4.1.1进行编译时发现程序无法运行。 经原文作者测试,发现当使用shared library形式编译程序后无法运行,而使用static linking形式编译程序后可正常运行。

计算机组成原理实验报告材料

福建农林大学计算机与信息学院信息工程类实验报告系:计算机科学与技术专业:计算机科学与技术年级: 09级 姓名:张文绮学号: 091150022 实验课程:计算机组成原理 实验室号:___田405 实验设备号: 43 实验时间:2010.12.19 指导教师签字:成绩: 实验一算术逻辑运算实验 1.实验目的和要求 1. 熟悉简单运算器的数据传送通路; 2. 验证4位运算功能发生器功能(74LS181)的组合功能。 2.实验原理 实验中所用到的运算器数据通路如图1-1所示。其中运算器由两片74181

以并/串形式构成8位字长的ALU。运算器的输出经过一个三态门(74245)和数据总线相连,运算器的两个数据输入端分别由两个锁存器(74373)锁存,锁存器的输入连接至数据总线,数据开关INPUT DEVICE用来给出参与运算的数据,并经过一个三态门(74245)和数据总线相连,数据显示灯“BUS UNIT”已和数据总线相连,用来显示数据总线内容。 图1-2中已将用户需要连接的控制信号用圆圈标明(其他实验相同,不再说明),其中除T4为脉冲信号,其它均为电平信号。由于实验电路中的时序信号均已连至W/R UNIT的相应时序信号引出端,因此,在进行实验时,只需将W/R UNIT 的T4接至STATE UNIT的微动开关KK2的输出端,按动微动开关,即可获得实验所需的单脉冲,而S3,S2,S1,S0,Cn,LDDR1,LDDR2,ALU-B,SW-B各电平控制信号用SWITCH UNIT中的二进制数据开关来模拟,其中Cn,ALU-B,SW-B为低电平控制有效,LDDR1,LDDR2为高电平有效。 3.主要仪器设备(实验用的软硬件环境) ZYE1603B计算机组成原理教学实验系统一台,排线若干。 4.操作方法与实验步骤

寄存器与7种寻址方式

一、寄存器 总共有14个16位寄存器,8个8位寄存器 通用寄存器: 数据寄存器: AH(8位) AL(8位) AX(16位) (AX和AL又称累加器) BH(8位) BL(8位) BX(16位) (BX又称基址寄存器,唯一作为存储器指针使用寄存器) CH(8位) CL(8位) CX(16位) (CX用于字符串操作,控制循环的次数,CL 用于移位) DH(8位) DL(8位) DX(16位) (DX一般用来做32位的乘除法时存放被除数或者保留余数) 指针寄存器: SP 堆栈指针(存放栈顶地址) BP 基址指针(存放堆栈基址偏移) 变址寄存器:主要用于存放某个存储单元地址的偏移,或某组存储单元开始地址的偏移, 即作为存储器(短)指针使用。作为通用寄存器,它们可以保存16位算术逻辑运算中的操 作数和运算结果,有时运算结果就是需要的存储单元地址的偏移. SI 源地址(源变址寄存器) DI 目的地址(目的变址寄存器) 控制寄存器: IP 指令指针 FLAG 标志寄存器 ①进位标志CF,记录运算时最高有效位产生的进位值。

②符号标志SF,记录运算结果的符号。结果为负时置1,否则置0。 ③零标志ZF,运算结果为0时ZF位置1,否则置0。 ④溢出标志OF,在运算过程中,如操作数超出了机器可表示数的范围称为溢出。溢出时OF位置1,否则置0。 ⑤辅助进位标志AF,记录运算时第3位(半个字节)产生的进位值。 ⑥奇偶标志PF,用来为机器中传送信息时可能产生的代码出错情况提供检验条件。当结果操作数中1的个数为偶数时置1,否则置0。 段寄存器 CS 代码段IP DS 数据段 SS 堆栈段SP BP ES 附加段 二、七种寻址方式: 1、立即寻址方式: 操作数就包含在指令中。作为指令的一部分,跟在操作码后存放在代码段。 这种操作数成为立即数。立即数可以是8位的,也可以是16位的。 例如: 指令: MOV AX,1234H 则: AX = 1234H 2、寄存器寻址方式: 操作数在CPU内部的寄存器中,指令指定寄存器号。 对于16位操作数,寄存器可以是:AX、BX、CX、DX、SI、DI、SP和BP等。对于8位操作数,寄存器可以是AL 、AH、BL、BH、CL、CH、DL、DH。 这种寻址方式由于操作数就在寄存器中,不需要访问存储器来取得操作数 因而可以取得较高的运算数度。

32位PowerPC构架通用寄存器分析及总结一

32位PowerPC构架通用寄存器分析及总结一 第一部分 32位 PowerPC构架下寄存器概述 32 位PowerPC构架寄存器模型可以分成三个类级别:UISA,VEA,OEA,我们根据这三个级别把PowerPC所使用的所有寄存器分为三类: 第一类:用户指令集构架(UISA-User Instruction Set Architecture)下所使用的寄存器;第二类:虚拟环境构架(VEA-Virtual Environment Architecture)下所使用的寄存器;第三类:操作系统环境(OEA-Operating Environment Architecture)下所使用的寄存器;PowerPC指令集构架为所有的算术逻辑运算指令定义了“寄存器到寄存器”格式的指令,这些指令的操作数来自或者来自于寄存器,或者来自于指令中的立即数。而对于“三寄存器”格式的指令,PowerPC指令集定义其中一个寄存器用来存目的操作数,另外两个寄存器用来存放源操作数。这样的话,存放源操作数的寄存器还可以被其它指令使用,从而减少了某些操作的指令数目。并且对于访问寄存器,PowerPC构架定义了明确的load和store访存指令(这是RISC指令集的典型特点)。 备注:寄存器中的保留位允许软件写任何值(其实就是0或者1),但是读出来的值,未必是我们写出来的值。它的值依赖于具体的执行系统。 接下来,我们分别来介绍这三类寄存器。 第二部分 UISA寄存器集合 用户模式下的寄存器可以被所有的用户级软件和特权级软件所使用,它包含以下的寄存器:32个通用寄存器GPRs(General-purpose registers):GPR0-GPR31; 32个浮点寄存器FRPs(Floating-point registers):FPR0-FPR31; 1个条件寄存器:CR(Condition register); 1个XER寄存器; 1个LR(Link register)寄存器; 1个CTR(Count register)寄存器; 1个浮点状态控制寄存器:FPSCR(Floating-point status and control register); 备注:不管是单精度数还是双精度数,在浮点寄存器中都是以双精度格式存储。 示意图如下:

ARM处理器共有37个寄存器其中包括.

ARM处理器共有37个寄存器。其中包括: **31个通用寄存器,包括程序计数器(PC)在内。这些寄存器都是32位寄存器。 **6个状态寄存器。这些寄存器都是32位寄存器。 ARM处理器共有7种不同的处理器模式,每一种模式中都有一组相应的寄存器组。在任何时刻,可见的寄存器包括15个通用寄存器(R0-R14),一个或两个状态寄存器及程序计数器(PC)。在所有的寄存器中,有些是各模式公用一个物理寄存器,有一些寄存器各模式拥有自己独立的物理寄存器。 **************************************************** 通用寄存器 ***************************************************8 通用寄存器分为以下三类:备份寄存器、未备份寄存器、程序计数器PC 未备份寄存器 未备份寄存器包括R0-R7。对于每一个未备份寄存器来说,所有处理器模式下都是使用同一个物理寄存器。未备份寄存器没有被系统用于特别的用途,任何可采用通用寄存器的场合都可以使用未备份寄存器。 备份寄存器 对于R8-R12备份寄存器来说,每个寄存器对应两个不同的物理寄存器。系统为将备份寄存器用于任何的特殊用途,但是当中断处理非常简单,仅仅使用R8-R14寄存器时,FIQ处理程序可以不必执行保存和恢复中断现场的指令,从而可以使中断处理非常迅速。 对于R13,R14备份寄存器来说,每个寄存器对应六个不同的物理寄存器,其中的一个是系统模式和用户模式共用的;另外的五个对应于其他的五种处理器模式。采用下面的记号来区分各个物理寄存器: R13_ 其中MODE可以是下面几种模式之一:usr,svc,abt,und,irq,fiq 程序计数器PC 可以作为一般的通用寄存器使用,但有一些指令在使用R15时有一些限制。由于ARM采用了流水线处理器机制,当正确读取了PC的值时,该值为当前指令地址值加上8个字节。也就是说,对于ARM指令集来说,PC指向当前指令的下两条指令的地址。由于ARM指令是字对齐的,PC值的第0位和第一位总为0。

汇编语言学习笔记之通用寄存器

汇编语言学习笔记之通用寄存器 从昨天开始,正式拉开了学习汇编语言的序幕,对于汇编语言的一些特点以及数据的表示及类型做了一番了解,由于这些东西每一种语言里都要介绍,而且一时半会也真弄不太明白它们的具体使用,也就粗略的看了一下,留待在今后的学习中结合实例加以体会吧。 而通用寄存器应该说是CPU内部重要的数据存储资源,学习汇编语言必须要掌握清它们的功能。因此汇编语言学习的第一篇学习笔记就从通用寄存器开始了。以下内容摘自汇编教程中。 寄存器是CPU内部重要的数据存储资源,是汇编程序员能直接使用的硬件资源之一。由于寄存器的存取速度比内存快,所以,在用汇编语言编写程序时,要尽可能充分利用寄存器的存储功能。 寄存器一般用来保存程序的中间结果,为随后的指令快速提供操作数,从而避免把中间结果存入内存,再读取内存的操作。在高级语言(如:C/C++语言)中,也有定义变量为寄存器类型的,这就是提高寄存器利用率的一种可行的方法。 另外,由于寄存器的个数和容量都有限,不可能把所有中间结果都存储在寄存器中,所以,要对寄存器进行适当的调度。根据指令的要求,如何安排适当的寄存器,避免操作数过多的传送操作是一项细致而又周密的工作。有关“寄存器的分配策略”在后续课程《编译原理》中会有详细的介绍。 由于16位/32位CPU是微机CPU的两个重要代表,所以,在此只介绍它们内部寄存器的名称及其主要功能。 1、16位寄存器组 16位CPU所含有的寄存器有: 4个数据寄存器(AX、BX、CX和DX), 2个变址和指针寄存器(SI和DI), 2个指针寄存器(SP和BP) 4个段寄存器(ES、CS、SS和DS), 1个指令指针寄存器(IP), 1个标志寄存器(Flags) 2、32位寄存器组 32位CPU除了包含了先前CPU的所有寄存器,并把通用寄存器、指令指针和标志寄存器从16位扩充成32位之外,还增加了2个16位的段寄存器:FS 和GS。 32位CPU所含有的寄存器有: 4个数据寄存器(EAX、EBX、ECX和EDX), 2个变址和指针寄存器(ESI和EDI), 2个指针寄存器(ESP和EBP) 6个段寄存器(ES、CS、SS、DS、FS和GS),

通用寄存器实验报告

6.9 通用寄存器实验报告 一、实验目的: 1、了解通用寄存器组的用途及对CPU的重要性。 2、掌握通用寄存器组的设计方法。 二、实验内容: 1、通用寄存器组的作用 通用寄存器组是CPU的重要组成部分。 (1)从存储器和外部设备(除DMA方式外)取来的数据要放在通用寄存器中; (2)向存储器和外部设备(除DMA方式外)输出的数据从通用寄存器中取出; (3)参加算术运算和逻辑运算的数据从通用寄存器组中取出,同时通用寄存器也是运算结果的暂存地。 (4)通用寄存器组有两个读端口,负责提供进行算术逻辑单元需要的源操作数和目的操作数;有一个写端口,负责将运算结果保存到指定的寄存器内。 2、通用寄存器组功能实现 根据通用寄存器组的功能要求,一个只有四个16位寄存器的通用寄存器组的框图如下图所示: ⑴寄存器部分: 当reset为低电平时,将四个16位寄存器R0-R3复位为0;当寄存器的write和sel

为高电平时,在时钟信号clk的上升沿将D端的输入D[15-0]写入寄存器,然后送到寄存器的输出Q[15-0]。4个寄存器的允许写信号write和外部产生的目的寄存器写信号DRWr 直接相连。每个寄存器还有另一个选择信号sel,它决定哪一个寄存器进行写操作。4个寄存器的选择信号分别和2-4译码器产生的sel00、sel01、sel10、sel11相连。只有当一个寄存器被选中(sel为高电平时),才允许对该寄存器进行写操作。 ⑵ 2-4译码器: 2-4译码器的输入sel[1-0]接DR[1-0],2-4译码器对2位的输入信号sel[1-0]进行2-4译码,产生4个输出sel00、sel01、sel10、sel11,分别送往4个寄存器R0、R1、R2和R3的选择端sel。 ⑶ 4选1多路器 4选1多路选择器1从4个寄存器R0、R1、R2和R3的输出Q[15-0]选择1路送到DR_data[15-0],给算术逻辑单元提供目的操作数;选择信号sel[1-0]接DR[1-0]。4选1多路选择器2从4个寄存器R0、R1、R2和R3的输出Q[15-0]选择1路送到SR_data[15-0],给算术逻辑单元提供源操作数;选择信号sel[1-0]接SR[1-0]。 三、实验要求: 1、实验设计目标 设计一个通用寄存器组满足以下要求: (1)通用寄存器组中有4个16位的寄存器。 (2)当复位信号reset=0时,将通用寄存器组中的4个寄存器清零。 (3)通用寄存器组中有1个写入信号,当DRWr=1时,在时钟clk的上升沿将数据总线上的数写入DR[1-0]指定的寄存器。 (4)通用寄存器组中有两个读出端口,一个对应算术逻辑单元的目的操作数DR,另一个对应算术逻辑单元的源操作数SR。DR[1-0]选择目的操作数;SR[1-0]选择源操作数。 (5)设计要求层次设计。底层的设计实体有三个:16位寄存器,具有复位功能和允许写功能;一个2-4译码器,对应寄存器写选择;一个4选1多路开关,负责选择寄存器的读出。顶层设计构成一个完整的通用寄存器组。 2、顶层设计实体的引脚要求 引脚要求对应关系如下: (1)clk对应试验台上的时钟(单脉冲)。 (2)reset对应实验台上的CPU复位信号CPU_RST。 (3)SR[1-0]对应实验台开关SA1,SA0。

计算机组成原理中断实验报告

北京建筑大学 2015/2016 学年第二学期 课程设计 课程名称计算机组成原理综合实验 设计题目微程序控制器设计与实现 系别电信学院计算机系 班级计141 学生姓名艾尼瓦尔·阿布力米提 学号 完成日期二〇一六年七月八日星期五 成绩 指导教师 (签名) 计算机组成综合实验任务书

?实验目的 1.融合贯通计算机组成原理课程,加深对计算机系统各模块的 工作原理及相互联系(寄存器堆、运算器、存储器、控制台、 微程序控制器)。 2.理解并掌握微程序控制器的设计方法和实现原理,具备初步 的独立设计能力;3.掌握较复杂微程序控制器的设计、调试等 基本技能;提高综合运用所学理论知识独立分析和解决问题的 能力。 ?实验电路 1. 微指令格式与微程序控制器电路 2.微程序控制器组成 仍然使用前面的CPU组成与机器指令执行实验的电路图,但本次实验加入中断系统。这是一个简单的中断系统模型,只支持单级中断、单个中断请求,有中断屏蔽功能,旨在说明最基本的原理。 中断屏蔽控制逻辑分别集成在2片GAL22V10(TIMER1 和TIMER2)中。其ABEL语言表达式如下: INTR1 := INTR; INTR1.CLK = CLK1; IE := CLR & INTS # CLR & IE & !INTC; IE.CLK= MF; INTQ = IE & INTR1;

其中,CLK1是TIMER1产生的时钟信号,它主要是作为W1—W4的时钟脉冲,这里作为INTR1的时钟信号,INTE的时钟信号是晶振产生的MF。INTS微指令位是INTS机器指令执行过程中从控制存储器读出的,INTC微指令位是INTC机器指令执行过程中从控制存储器读出的。INTE是中断允许标志,控制台有一个指示灯IE显示其状态,它为1时,允许中断,为0 时,禁止中断。当INTS = 1时,在下一个MF的上升沿IE变1,当INTC = 1时,在下一个MF的上升沿IE变0。CLR信号实际是控制台产生的复位信号CLR#。当CLR = 0时,在下一个CLK1的上升沿IE变0。当 CLR=1 且INTS = 0 且 INTC = 0时,IE保持不变。 INTR是外部中断源,接控制台按钮INTR。按一次INTR按钮,产生一个中断请求正脉冲INTR。INTR1是INTR经时钟CLK1同步后产生的,目的是保持INTR1与实验台的时序信号同步。INTR脉冲信号的上升沿代表有外部中断请求到达中断控制器。INTQ是中断屏蔽控制逻辑传递给CPU的中断信号,接到微程序控制器上。当收到INTR脉冲信号时,若中断允许位INTE=0,则中断被屏蔽,INTQ仍然为0;若INTE =1,则INTQ =1。 为保存中断的断点地址,以便中断返回,设置了一个中断地址寄存器IAR。第二节图4中的IAR(U19)就是这个中断地址寄存器,它是一片74HC374,有LDIAR和IAR_BUS#两个信号输入端,均连接至微程序控制器。LDIAR信号的上升沿到达时,来自程序计数器PC的地址会置入IAR中。IAR_BUS#为0时,保存在IAR中的断点地址会输出

实验CPU通用寄存器组 计算机组成原理

实验CPU 通用寄存器组 一、实验目的 (1)了解通用寄存器组的用途及对CPU的重要性。 (2)掌握通用寄存器组的设计方法。 二、实验原理 通用寄存器组是CPU的重要组成部分。从存储器取来的数据要放在通用寄存器中;从外部设备取来的数据除DMA方式外,要放在通用寄存器中。向存储器输出的数据也是从通用寄存器中取出;向外部设备输出的数据除DMA方式外也是从通用寄存器中取出来的。由于从通用寄存器组中取数据比从存储器或者外部设备取数据快得多,因此参加算术运算和逻辑运算的数据一般是从通用寄存器组中取出,它向算术逻辑单元ALU提供了进行算术运算和逻辑运算所需要的两个操作数,同时又是运算结果的暂存地。通用寄存器组内寄存器的数目与CPU性能有关,CPU性能预告,通用寄存器组内的寄存器数目越多。由于算术逻辑运算需要两个操作数,因此通用寄存器组有两个读端口,负责提供进行算术逻辑单元需要的源操作数和目的操作数。通用寄存器组有1个写端口,负责将运算结果保存到指定的寄存器内。根据通用寄存器组的功能要求,一个只有4个16位寄存器的通用寄存器组的框图如下图所示。 在上图所示的电路中,当reset为低电平时,将4个16位寄存器R0~R3复位为0。当寄存器的write和sel为高电平时,在时钟信号clk的上升沿将D端的输入D[15..0]写入寄存器,然后送到寄存器的输出Q[15..0]。4个寄存器的允许写信号write和外部产生的目的寄存器写信号DRWr直接相连。每个寄存器还有另一个选择信号sel,它决定哪一个寄存器进行写操作。4个寄存器的选择信号分别和2-4译码器产生的sel00、sel01、sel10和sel11相连。只有当1个寄存器被选中时,才允许对该寄存器进行写操作。2-4译码器的输入sel[1..0]接DR[1..0],

相关主题
文本预览
相关文档 最新文档