计算机组成大型实验报告机器指令设计实验Word文件下载.docx
《计算机组成大型实验报告机器指令设计实验Word文件下载.docx》由会员分享,可在线阅读,更多相关《计算机组成大型实验报告机器指令设计实验Word文件下载.docx(18页珍藏版)》请在冰豆网上搜索。
算术加
ADDR0,[ADDR]
110001DR
ADDR
寄存器内容送存储器
STA[ADDR],R0
110010DR
输出
OUTPORTAR,[ADDR]
110011DR
转移
JMPADDR
110100XX
表2-微指令字段编码表
编码+译码
BTO
OTB
FS=1
FS=0
FUNC
000
PC+1(T4)
001
B-DA1(T4)
ALU-B#
J
(1)
M-W#(T3)
010
B-DA2(T4)
299-B#
J
(2)
M-R#(T2)
011
B-IR(T3)
SR-B#
J(3)
I/O-W#(T3)
100
B-DR(T4)
DR-B#
J(4)
I/O-R#(T2)
101
B-SP(T4)
SI-B#
J(5)
INT-R#(T2)
110
B-AR(T3)
SP-B#
CyCn#
INT-E#(T3)
111
B-PC#
PC-B#
CyNCn#
表3-散转微地址形成规则表
散转条件
散装微地址形成规则
j
(1)条件
指令码I7I6=11时,
散转入口地址=微代码下址(OR)0,1,0,I5,I4,I3,I2
指令码I7I6!
=11时,
散转入口地址=微代码下址(OR)0,0,0,I7,I6,I5,I4
j
(2)条件
散转入口地址=微代码下址(OR)0,0,0,0,0,I3,I2
j(3)条件
散转入口地址=微代码下址(OR)0,0,0,0,0,KB,KA
j(4)条件
散转入口地址=微代码下址(OR)0,0,0,0,0,FC,FZ
j(5)条件
散转入口地址=微代码下址(OR)0,INT,0,0,0,0,0
注:
表格中FC为进位标志,FZ为零标志。
本实验只要到J
(1),J(3),J(4)四条散转条件。
表4-简单模型计算机机器指令表
指令功能
IN
ADD
STA
OUT
JMP
指令符号
数据输入
数据传输
跳转
微程序入口地址
30H
31H
32H
33H
34H
(2)微程序流程图
根据实验八的机器指令和控制台指令可以画出图2所示的流程图。
图2-模型计算机指令执行流程图
三、四条指令的微程序代码设计
根据实验要求的汇编程序,发现并不需要INCDR这条指令,所以也没有对其进行微代码的设计。
另外显然PC->
AR,PC+1->
PC;
01H->
02H
RAM->
IR;
02H->
03H
J
(1)散转;
03H->
(10H)
三条微指令动作为公操作。
因此我们只需要考虑除此之外的其他微指令动作。
下面对4条指令,逐条进行解释分析。
1.无借位减:
SUBDR,[ADDR]
a.指令功能:
(SR)-(DR)->
DR,影响Cy,Zi标志位。
当(SR)<
(DR)时,Cy=1,当(SR)=DR时,Zi=1。
。
b.指令格式:
二字节指令
c.指令流程:
PC->
J
(1)散转;
PC;
35H->
12H
AR;
12H->
13H
DA1;
13H->
14H
DR->
DA2;
14H->
15H
DA1-DA2->
DR;
15H->
01H
微地址
微代码
FS
S3
S2
S1
S0
M
Ci
N
下址
微指令注释
35H
DC4012
1
0010010
AR,PC=PC+1
C10013
0010011
AR
210014
0010100
DA1
500015
0010101
DA2
87D801
0000001
DR
2.带进位加:
ADDCDR,[ADDR]
(SR)+(DR)+Cy->
当(SR)+(DR)+Cy>
255时,Cy=1,当(SR)+(DR)+Cy=256时,Zi=1。
.这条指令可实现多字节的加法操作。
c.指令流程:
PC;
IR;
J
(1)散转;
36H->
18H
AR;
18H->
19H
DA1;
19H->
1AH
DA2;
1AH->
1BH
DA1+DA2+Cy->
1BH->
d.微程序代码:
36H
DC4018
0011000
C10019
0011001
21001A
0011010
50001B
0011011
DR,CyCn
3.C条件转移:
JMPC[ADDR]
若Cy=1,则[ADDR]->
PC,否则顺序执行下条指令。
影响Cy,Zi标志位。
b.指令格式:
37H->
41H
41H->
42H
42H->
43H
J4#条件散转转移;
43H->
(44H)
若Cy=0;
44H->
若Cy=1;
46HDA1->
46H->
37H
DC4041
1000001
C10042
1000010
210043
1000011
024044
1000100
44H
000001
NULL
45H
000000
0000000
46H
E44101
DA1->
PC,PC+1有效
4.存储器内容送通用寄存器LDADR,[ADDR]
(ADDR)->
DR,不影响Cy,Zi标志位。
39H->
3CH
3CH->
3DH
3DH->
3EH
DR;
3EH->
39H
DC403C
0111100
C1003D
0111101
21003E
0111110
843C01
根据这四条指令微代码可以得到如图3所示流程图。
图3-新增指令逻辑结构图
四、汇编程序设计
1.程序功能
程序功能是对输入开关上的数据和存储器某一单元中的数据进行加法操作,结果累计在存储器某个单元中,当累计值大于256时转而进行减法操作,即把此存储器单元中的值减去输入开关上的数据,结果送同一存储器单元中,当操作结果小于0时再转而进行加法操作,使输出显示顶上出现数据连续加,然后连续减,减到0时候连续加。
这样连续加、连续减直到拨动
结束程序运行为止。
2.程序流程图
3.汇编程序代码:
端口号(POATAR)只有一个,为00H。
主存储器单元地址为30H存放数据,用主存储器单元31H,32H来存放跳转地址。
由于JMPC[ADDR]跳转的是ADDR所指内容,故需要额外的开销。
如果尝试把C条件转移改成JMPCADDR也是很简单的事情,具体可以查看附件excel表格MY-CODE.XLS中的“汇编代码1”表。
每次存储器值更新,都通过OUT指令进行存储器内容送入输出设备(00H)显示。
另外,由于简单模型机机器指令并没有立即数传输给寄存器或存储器,因此存储器清零操作需要一定的技巧。
我们采用的方法是先把存储器内容传给寄存器,然后存储器内容减去寄存器内容,值送入寄存器,该值为0,然后把该值通过寄存器送入存储器。
详细的汇编程序代码如下表4所示。
主存窗口截图:
主存储器地址
指令码
汇编代码
说明
00H
E4H
LADR0,[30H]
存储器清零
D4H
SUBR0,[30H]
04H
C8H
STA[30H],R0
05H
06H
CCH
OUT[00H],[30H]
07H
08H
09H
COH
INR0,[00H]
存储器内容=存储器内容+输入值
0AH
0BH
C4H
ADDR0,[30H]
0CH
0DH
C8H
STA[30H],R0
0EH
0FH
10H
11H
DCH
JMPC[32H]
存储器内容>
=265?
D0H
JMP09H
16H
C0H
存储器内容=存储器内容-输入值
17H
1CH
1DH
1EH
1FH
JMPC[31H]
存储器内容<
0?
20H
21H
JMP16H
22H
[ADDR]
五、实验结果记录
对同一程序进行了多次实验,表5记录了其中的4组。
可以发现当数据从0增大至超过256后,截取数的高位,剩下低8位,相对于加上给数后又减去256。
进位符Cy=1,开始做减操作,显然该数减去输入数值必定小于0,相对于下溢,相当与减去该数后又加上256。
由于加的数与减的数是一样的,因此此时,输出结果呈现交替变化。
实验截图:
表5-实验结果记录
实验结果
输入值
58H
61H
第1次输出
86H
72H
第2次输出
B0H
C9H
ABH
C2H
第3次输出
23H
第4次输出
1D
第5次输出
第6次输出
第7次输出
第8次输出
六、实验过程中出现的问题与解决方案
(1)微代码数据量比较大,校验多次以后才确保了正确。
(2)起初完成了要求的功能,但后来发现每次CLR有效时并没有清零,后来检查并询问了已经成功的同学解决了该问题。
将R0与存储单元[30H]的数自身相减。
(3)明确理解J(4)散转以后,加入了微地址47H,用以判断达到256H时做减法操作。