不带进位的与或运算指令的实现Word文档格式.docx
《不带进位的与或运算指令的实现Word文档格式.docx》由会员分享,可在线阅读,更多相关《不带进位的与或运算指令的实现Word文档格式.docx(17页珍藏版)》请在冰豆网上搜索。
![不带进位的与或运算指令的实现Word文档格式.docx](https://file1.bdocx.com/fileroot1/2022-12/17/c2d03561-5a45-4fc7-9e57-93963f3672c1/c2d03561-5a45-4fc7-9e57-93963f3672c11.gif)
STAADDR(A)->
ADDR
第1字节第2字节
I7
I6
I5
I4
I3
I2
I1
I0
A7
A6
A5
A4
A3
A2
A1
A0
操作码操作数地址
[2]寄存器直接寻址
指令字节中含有寄存器选择码,决定选哪个寄存器进行操作。
例如,单字节指令:
MOVA,Ri(Ri)->
单字节
操作码与Ri选择码
例如,双字节指令:
MOVRi,#datadata->
Ri
D7
D6
D5
D4
D3
D2
D1
D0
[3]寄存器间接寻址
例如,但字节指令:
MOVA,@Ri(Ri)->
Ri选择码
[4]立即数寻址
例如:
MOVA,#DATADA->
MOVRI,#DATADATA->
RI
(4)设计微程序及其实现方法
在本实验平台的硬件设计中,采用24位微指令,若微指令采用全水平不编码纯控制场的格式,那么至多有24个微操作控制信号,可由微代码直接实现。
如果采用多组编码译码,那么24位微代码通过二进制译码可实现2的n次幂个互斥的微操作控制信号。
由于模型机指令系统规模较小,功能也不太复杂,所以采用全水平不编码纯控制场的微指令格式。
在模型机中,用指令操作码的高4位作为核心扩展成8位的微程序入口地址MD0~MD7,这种方法称为“按操作码散转”,如下表所示:
按操作码换散
指令操作码
微程序首地址
MD7,MD6
I4
MD1、MD0
MD7~MD0
1
003H
007H
00BH
00FH
013H
017H
01BH
01FH
023H
027H
02BH
02FH
033H
037H
03BH
03FH
每条指令由不超过4条的微指令组成,那么可根据下表组成每条微程序的首地址。
微程序首地址形成
MD7
MD6
MD5
MD4
MD3
MD2
MD1
MD0
微指令的运行顺序为下地址确定法,即采用计数增量方法,每条微指令执行过之后微地址自动加1,指向下一条微指令地址。
微地址寄存器由2片74LS161组成,在模型机停止状态下,微地址被清零。
当试验平台开始运行时,微地址从OOH开始运行。
且OOH放置一条取指指令,根据程序开始地址从内存中读出第一条指令。
(5)设计模型机运行中的指令安排
本实验模型机已确定了指令系统,微指令采用全水平不编码纯控制场的格式,微程序的入口地址采用微操作码散转换方式,微地址采用计数增量方式,所以可确定模型机中时序单元所产生的每一拍的作用。
本实验中为了让实验者更好地观察实验的各个中间过程各寄存器的值,由监控单元产生了4个脉冲信号。
4个脉冲信号组成一个微指令周期,为不同地寄存器提供工作脉冲。
微指令波形如下图所示:
SIGN
PLS1 微地址寄存器的工作脉冲,用来设置微程序的首地址及微地址加1。
PLS2 PC计数器的工作脉冲,根据微指令的控制实现PC计数器加1和重置PC计数器加1和重置PC计数等功能。
PLS3把24微指令打入3片微指令锁存器。
PLS4把当前总线上的数据打入微指令选通的寄存器中。
(6)设计指令执行流程
根据模型机逻辑图和目前硬件条件来设计指令系统中每条指令的执行流程。
在每个系统中,一条指令从内存取出到执行完毕,需要若干个机器周期,任何指令中都必须有一个机器周期作为“取指令周期”,称为公操作周期。
一条指令共需几个机器周期取决于指令在机器内实现的复杂程度。
对于微程序控制的计算机,在设计指令执行流程时,要保证每条微指令所含的微操作的必要性和合理性,还应知道总线IAB,IDB,OAB,ODB仅是传输信息的通路,没有寄存信息的功能,而且必须保证总线传输信息时信息的唯一性。
取指微指令执行过程如下:
在模型机处于停机状态时,模型机的微地址寄存器被清零,微指令锁存器输出无效。
在处于停机状态时,脉冲PLS1对微地址寄存器(74LS161)无效,微地址寄存器保持为零。
脉冲PLS2对PC计数器无效,同时PLS2把HALT=1打入启停单元的运行状态寄存器(74LS74)中,把模型机制为运行状态,使微程序锁存器输出有效。
PLS3把微程序存储器OOH单元(OOH单元存放取指微指令)的内容打入微指令锁存器中,并且输出取指微指令。
PLS4把从程序存储器读出的数据打入指令寄存器。
在模型机处于运行状态时,脉冲PLS1将微地址寄存器加1,脉冲PLS2将PC计数器加1,PLS3把微程序存储器的微指令打入微指令锁存器并且输出。
PLS4把当前总线上的数据打入当前微指令所选通的寄存器。
三,源程序及执行结果
(1)源程序清单
MOVRO,#22
MOVR1,#44
MOVA,RO
ORLA,#66
STA30
MOVA,R1
ANLA,#11
STA34
HALT
(2)执行结果如下图
以下为或运算时的执行情况:
以下为与运算时的执行情况:
四,分析
通过软件HKCPT的微单步功能可观察各个变量的变化。
累加器、有关寄存器、含每条指令执行的时序分析、存储器的变化如下表所示:
微周期
数据流程
节拍
数据总线
地址总线
操作寄存器
T0
取指微指令
RAM->
BUS->
IR1
PLS1:
微地址清零
PLS2:
置模型机运行
PLS3:
取指微指令输出
PLS4:
无效
6CH
00H
微地址:
PC=00H
锁存微指令
MOVR0,#22
寄存器R0
置微地址
PC+1
微指令输出
22H
01H
1BH
PC=01H
寄存器R0=40H
T1
取微指令
微地址+1
6DH
02H
1CH
PC=02H
IR1=6DH
寄存器R1
44H
03H
PC=03H
寄存器R1=44H
3CH
04H
PC=04H
IR1=0FH
MOVA,R0
A->
DR1
0FH
PC=05H
DR1=00H
寄存器R0->
锁存器DR2
PC不变
10H
DR2=22H
T2
ALU->
11H
A=6FH
T3
CFH
05H
12H
33H
PC=06H
DR1=22H
DR2
66H
34H
DR2=66H
35H
A=66H
8FH
06H
36H
IR1=8FH
RAM→BUS→IR2
PLS1:
PLS2:
PLS3:
取微指令输出
PLS4:
BUS→IR2
30H
07H
微地址:
23H
PC=07H
IR2=30H
A→RAM(30H)
BUS→RAM
08H
24H
PC=08H
RAM(30)=66H
RAM→BUS→IR1
BUS→IR1
3DH
3DH
09H
微地址25H
PC=09H
寄存器R1->
PC=10H
DR2=44H
PC=0AH
A=44H
DFH
0AH
PC=0BH
IR1=DFH
A→DR1
A→DR1
0BH
37H
PC=0CH
DR1=44H
BUS→DR2
BUS→DR2
38H
DR2=11H
ALU→A
BUS→A
39H
A=00H
0CH
OCH
3AH
0DH
PC=0DH
IR2=34H
A→RAM(34H)
0EH
PC=0EH
RAM(34)=00H
FFH
FFH
IR1=FFH
置模型机为停止状态
PLS1置微地址
停机
微地址3FH
PC=0FH
五,设计总结
通过这次的课程设计,实现了不带进位的与或运算指令,在此过程中,我收获颇丰.这次课程设计不仅提高了我的动手实践能力,同时也提高了我的独立思考能力.通过本次实验,不仅将自己学的计算机组成原理的理论知识得到巩固,而且将理论知识运用于实践,增强了自己的动手能力.通过自己动手操作与思考,我了解了各个单元的工作原理,了解了每一个微单步过程中,微地址、数据总线、地址总线、操作寄存器和数据流程的变化。
通过本次实验,我对计算机组成原理的实验箱的工作原理有了更加透彻的了解.计算机的硬件部分的各个部分的逻辑关系和功能的实现,以及指令的流程,微程序的执行过程,这些重要知识,在本次课程设计中我都有了深入的了解。