计算机组成原理课程设计报告
JUC2模型机的微程序设计
姓名 学号
专业 计算机科学与技术 指导教师 肖铁军
江苏大学计算机学院
2014 年 6 月 30 日
--
--
1 熟悉微程序的设计和调试方法
1.1 目标要求
(1) 掌握微程序的设计方法
(2) 熟悉利用调试软件运行、调试微程序的方法
1.2 微程序设计
1.2.1 取指令的微程序设计
微地址(H) 000 001 002 003 微指令(H) F0 20080001 00069002 CC000003 00000404 1 0 6 0 F1 0 0 3 0 F2 0 0 0 0 0 0 0 0 微指令字段(H) F3 F4 2 1 0 0 F5 0 2 0 0 F6 0 1 0 0 F7 0 1 0 0 F8 0 0 0 2 F9 001 002 003 004 PCoe, ARce ARoe′, RD, DRce′, PCinc DRoe, IRce BM2 微命令 1.2.2 取目的操作数的微程序设计
(1) 直接寻址的微程序
微地址(H) 02C 033 034 035 036 微指令(H) F0 20080033 00069034 C0080035 00061036 D4000007 1 0 6 0 6 F1 0 0 0 0 4 F2 0 0 0 0 0 0 0 0 0 0 微指令字段(H) F3 F4 2 1 2 1 0 F5 0 2 0 2 0 F6 0 1 0 0 0 F7 0 1 0 0 0 F8 0 0 0 0 0 F9 033 034 035 036 007 PCoe, ARce ARoe′, RD, DRce′, PCinc DRoe,ARce ARoe′, RD, DRce′ DRoe,TRce 微命令 1.2.3 执行阶段的微程序设计
(1) INC指令的微程序
微地址(H) 071 微指令(H) F0 1A700E50 0 F1 0 F2 9 3 微指令字段(H) F3 F4 0 F5 0 F6 0 F7 4 F8 0 F9 050 INC,SVce,PSWce 微命令 (2) 保存运算结果的微程序
微地址(H) 050 微指令(H) F0 F1 2 F2 0 微指令字段(H) F3 0 F4 0 F5 0 F6 0 F7 0 F8 0 F9 051 Soe,GRSce 微命令 051 052 68000200 3 60030052 3 00052200 5 0 0 0 0 0 0 0 0 3 1 0 0 0 2 0 0 052 Soe,DRce 000 ARoe,DRoe’,WR --
--
(3)JMP指令的微程序
微地址(H) 微指令(H) F0 F1 F2 微指令字段(H) F3 F4 F5 F6 F7 F8 F9 微命令 070 A4000200 5 1 0 0 0
1.3 调机程序设计
程序 1-1
0030: 0460; INC 0040H 0031: 0040;
0032: 0420; JMP 0030H 0033:
0030;
程序1-2
0030: 0460; INC FF02H 0031: FF02; 程序1-3
0030: 0480; DEC R0
1.4 运行调试
运行调试记录表举例:
0 0 0 1 000 ARoe,PCce --
--
1.5小结
通过本次上机试验,我掌握了微指令编码与指令编码的翻译方法,而且对取指令等操作的过程中各个寄存器的变化有了更加清晰的了解。
--
--
2 双操作数指令的设计与调试
--
--
2.1 目标要求
完成双操作数指令的微程序设计和验证;去源操作数阶段和去目的操作数阶段相关寻址方式的微程序设计和验证,
--
--
2.2 设计任务
2.2.1 取源操作数
(1) 立即寻址
微地址(H) 004 00B 012 016 微指令(H) F0 00000A08 20080012 00069016 D0000006 0 1 0 6 F1 0 0 0 4 F2 0 0 0 0 0 0 0 0 微指令字段(H) F3 F4 0 2 1 0 F5 0 0 2 0 F6 0 0 1 0 F7 0 0 1 0 F8 0 0 0 0 F9 008 012 016 006 BM=5 PCoe,ARce ARoe’,RD,DRce’,PCinc DRoe,TRce 微命令 (2) 直接寻址
微地址(H) 00C 013 014 015 微指令(H) F0 20080013 00069014 C0080015 00061016 1 0 0 6 F1 0 0 0 4 F2 0 0 0 0 0 0 0 0 微指令字段(H) F3 F4 2 1 1 0 F5 0 2 2 0 F6 0 1 1 0 F7 0 1 1 0 F8 0 0 0 0 F9 008 012 016 006 PCoe,ARce ARoe’,RD,DRce’,PCinc DRoe,ARce DRoe,TRce 微命令 (3) 间接寻址
微地址(H) 00D 017 018 019 微指令(H) F0 20080017 00069018 C00800119 00061014 1 1 6 6 F1 0 0 0 4 F2 0 0 0 0 0 0 0 0 微指令字段(H) F3 F4 2 2 2 0 F5 0 0 0 0 F6 0 0 0 0 F7 0 0 0 0 F8 0 0 0 0 F9 017 018 019 006 PCoe,ARce ARoe’,RD,DRce’,PCinc DRoe,ARce ARoe’,RD,DRce’, 微命令 2.2.2 取目的操作数
(1) 寄存器寻址
微地址(H) 028 微指令(H) F0 54000007 2 F1 5 F2 0 0 微指令字段(H) F3 F4 0 F5 0 F6 0 F7 0 F8 0 F9 006 GRSoe,Ace 微命令 (2) 寄存器间接寻址
微地址(H) 029 035 036 微指令(H) F0 40080035 00061036 D4000007 2 6 6 F1 5 4 5 F2 0 0 0 0 0 0 微指令字段(H) F3 F4 0 0 0 F5 0 0 0 F6 0 0 0 F7 0 0 0 F8 0 0 0 F9 035 036 007 GRSoe,Ace ARoe’,RD,DRce’, DRoe, Ace 微命令 2.2.3 执行阶段
(1) MOV指令的微程序
--
--
微地址(H) 041 040 微指令(H) F0 94000040 00300E50 6 0 F1 5 0 F2 0 0 0 3 微指令字段(H) F3 F4 0 0 F5 0 0 F6 0 0 F7 0 0 F8 0 0 F9 040 050 DRoe, Ace SVce, 微命令
(2) SUB指令的微程序
微地址(H) 044 微指令(H) F0 98F00E50 4 F1 6 F2 3 3 微指令字段(H) F3 F4 0 F5 0 F6 0 F7 0 F8 0 F9 050 TRoe,SUB,SV,PSWce 微命令
2.3 调机程序设计
程序2-1 ,2-2
0030: 0031: 0032: 0033:
1620; 0101;
MOV #0101,0040H
0040;
4620; SUB #FFFF,0040
0034: FFFF; 0035: 0040
程序 2-3
0030: 1801; MOV FF08H,R1 0031: FF08;
0032: 1060; MOV R1,FF02H 0033: FF02;
程序2-4
0030: 4A20; SUB (0020H),0040H 0031: 0020; 0032: 0040; 0040:0003 程序2-5
0030: 1608;MOV #0101 (R0) 0031: 0101;
--
--
2.4 调试结果
--
--
2.5 小结
通过本次上机实验,我掌握了mov指令与sub指令的程序设计,并且也初步了解LED灯的相关的知识点。
--
--
3 条件转移指令的设计与调试
3.1 设计目标
为CPU扩充转移指令,完成转移指令的微程序设计与调试。
3.2 设计任务
3.2.1 取目的操作数
(1) 相对寻址
微地址(H) 02F 03D 03E 03F 032 035 036 微指令(H) F0 2008003D 0006903E D400003F 20700032 60080035 00061036 D4000007 1 0 6 1 3 0 6 F1 0 0 5 0 0 0 5 F2 0 0 0 1 0 0 0 0 0 0 3 0 0 0 微指令字段(H) F3 F4 2 1 0 0 2 1 0 F5 0 2 0 0 0 2 0 F6 0 1 0 0 0 0 0 F7 0 1 0 0 0 1 0 F8 0 0 0 0 0 0 0 F9 03D 03E 03F 032 035 036 007 PCoe, ARce ARoe’,RD,DRce’,PCinc DRoe, Ace PCoe,ADD ,SVce Soe,ARce ARoe’,RD,DRce’, DRoe, Ace 微命令 3.2.2 操作指令
(1) CMP指令的微程序
微地址(H) 049 微指令(H) F0 98F00200 4 F1 6 F2 3 3 微指令字段(H) F3 F4 0 F5 0 F6 0 F7 0 F8 0 F9 000 TRoe,SUB,SVce,PSWce 微命令 (2) JC指令的微程序
微地址(H) 068 026 027 微指令(H) F0 00000626 00000200 A4000200 0 0 5 F1 0 0 1 F2 0 0 0 0 0 0 微指令字段(H) F3 F4 0 0 0 F5 0 0 0 F6 0 0 0 F7 0 0 0 F8 0 0 0 F9 026 000 000 BM=3 ARoe,PCce 微命令 (3) TEST指令的微程序
微地址(H) 04A 微指令(H) F0 99700200 4 F1 6 F2 5 3 微指令字段(H) F3 F4 0 F5 0 F6 0 F7 0 F8 0 F9 000 TRoe,AND,SVce,PSWce 微命令 (4) JNZ指令的微程序
微地址(H) 06D 027 微指令(H) F0 00000626 A4000200 0 5 F1 0 1 F2 0 0 0 0 微指令字段(H) F3 F4 0 0 F5 0 0 F6 0 0 F7 0 0 F8 0 0 F9 000 000 BM=3 ARoe,PCce 微命令
--
--
3.3 调机程序设计
程序3-1,3-2,3-3,3-4
0030: 1601;MOV #0001,R1; 0031: 0001;
0032: 9601; CMP #0001,R1; 0033: 0001;
0034: 0220; JC 0040H; 0035: 0040H;
0036: 1620; MOV #0001H,FF01H; 0037: 0001H; 0038: FF01H;
0040: 1620; MOV #0080H,FF01H; 0041: 0080; 0042: FF01; 程序3-5
0030: 1601;MOV #0001,R1; 0031: 0001;
0032: 9601; CMP #0001,R1; 0033: 0001;
0034: 0238; JC ‘disp 0035: 000A;
0036: 1620; MOV #0001H,FF01H; 0037: 0001H; 0038: FF01H;
0040: 1620; MOV #0080H,FF01H; 0041: 0080; 0042: FF01; 程序3-6
0030: 1601; MOV #0002,R1; 0031: 0002;
0032: A601; TEST #0002,R1; 0033: 0002;
0034: 0360; JNZ 0040H; 0035: 0040
0036: 1620; MOV #0001H,FF01H;
--
--
0037: 0001H; 0038: FF01H;
0040: 1620; MOV #0080H,FF01H; 0041: 0080; 0042: FF01;
3.4 调试记录
--
--
3.5小结
通过本次上机实验,我清楚了JC,TEST,CMP等指令操作的过程,并且同时也了解到JC,JNZ指令的跳转条件,实现了CPU转移指令的扩充。
--
--
4 移位指令的设计与调试
4.1 设计目标
为CPU扩充移位指令,完成移位指令的微程序设计与调试。
4.2 设计任务
4.2.1 操作指令
(1) SHR指令的微程序
微地址(H) 063 微指令(H) F0 18100E50 0 F1 6 F2 0 1 微指令字段(H) F3 F4 0 F5 0 F6 0 F7 0 F8 7 F9 050 SRce,PSWce 微命令 (2) ROL指令的微程序
微地址(H) 064 微指令(H) F0 18200E50 0 F1 6 F2 0 2 微指令字段(H) F3 F4 0 F5 0 F6 0 F7 0 F8 7 F9 050 SLce,PSWce 微命令 4.3 调机程序设计
程序4-1.4-2
0030: 1600; MOV #0001,R0; 0031: 0001;
0032: 00C0; SHR, R0; 0033: 0238; JC ’FFFDH; 0034: FFFD; 程序4-3,4-4,4-5
0030: 1601;MOV #0505,R1; 0031: 0505;
0032: A601; TEST #0001,R1; 0033: 0001;
0034: 0338; JZ ‘0003; 0035: 0003;
0036: 0101; ROL,R1; 0037: 0420; JMP 0032H; 0038: 0032;
--
--
程序4-6
0030: 1600; MOV #0001,R0; 0031; 0001;
0032: 1060; MOV ,R0,FF01H; 0033: FF01;
0034: 9600; CMP #0100,R0; 0035: 0100;
0036: 0338; JZ ‘0006; 0037: 0006;
0038: 0100; ROL,R0; 0039: 0420; JMP 0032H; 0040: 0032;
4.4 调试记录
--
--
--
--
4.5 小结
通过本次上机实验,完成了CPU移位指令的扩充,同时也更深一步的接触到LED灯工作的原理及过程。独立的写出了任务4所需的程序,是我这次上机最大的收获。
--
--
5 堆栈相关指令的设计与调试
5.1 设计目标
为CPU扩充PUSH,POP,CALL,RET指令,完成微程序设计。
5.2 设计任务
5.2.1 操作指令
(1) PUSH指令的微程序
微地址(H) 078 084 085 微指令(H) F0 03000084 E0080085 03000051 0 7 0 F1 8 0 0 F2 0 0 0 0 0 3 微指令字段(H) F3 F4 0 2 0 F5 0 0 0 F6 0 0 0 F7 0 0 0 F8 0 0 0 F9 084 085 051 SPdec SPoe,ARce SVce 微命令 (2) POP指令的微程序(非寄存器)
微地址(H) 079 08E 08F 08A 微指令(H) F0 00000E8C 0006108F D400008A 00300050 0 7 6 0 F1 0 0 5 0 F2 0 0 0 0 0 0 0 3 微指令字段(H) F3 F4 0 2 0 0 F5 0 0 0 0 F6 0 0 0 0 F7 0 0 0 0 F8 0 0 0 0 F9 08E 08F 08A DRoe,Ace 050 SVce BM=7 SPoe,ARce 微命令 (3) POP指令的微程序(寄存器)
微地址(H) 08D 090 091 092 093 微指令(H) F0 B0000090 E0080091 02C61092 80080093 00052200 5 7 0 4 0 F1 4 0 0 0 F2 0 0 B 0 0 0 0 0 0 0 微指令字段(H) F3 F4 0 2 1 0 1 F5 0 0 1 2 1 F6 0 0 0 0 0 F7 0 0 1 0 2 F8 0 0 0 0 0 F9 090 091 092 093 000 ARoe,TRce SPoe,ARce SPinc,ARoe’,DRce’,RD TRoe,ARce ARoe’,DRoe’,WR 微命令 (4) CALL指令的微程序
微地址(H) 07A 09A 09B 09C 09D 09E 微指令(H) F0 0300009A B000009B E008009C 2003009D 0005209E 84000001 0 5 7 1 0 4 F1 8 4 0 0 0 1 F2 0 0 0 0 0 0 0 0 0 0 0 0 微指令字段(H) F3 F4 0 0 2 0 1 0 F5 0 0 0 3 1 0 F6 0 0 0 0 0 0 F7 0 0 0 0 2 0 F8 0 0 0 0 0 0 F9 09A SPdec 09B 09C 09D 09E 000 ARoe,TRce SPoe,ARce PCoe,DRce ARoe’,DRoe’,WR TRoe,PCce 微命令
--
--
(5) RET指令的微程序
微地址(H) 05A 094 095 096 微指令(H) F0 00000094 E0080095 02C61096 C4000000 0 7 0 6 F1 0 0 0 1 F2 0 0 B 0 0 0 0 0 微指令字段(H) F3 F4 0 2 1 0 F5 0 0 1 0 F6 0 0 0 0 F7 0 0 1 0 F8 0 0 0 0 F9 094 095 096 000 BM=0 SPoe,ARce SPinc,ARoe’,DRce’,RD DRoe,PCce 微命令 5.3 调机程序设计
程序5-1,5-2,5-3
0030: 1600; MOV,#0041,R0; 0031: 0041;
0032: 0600; PUSH R0; 0033: 0620; PUSH 0040H; 0034: 0040;
0035: 0648; POP (R0); 0036: 0641; POP R1; 0040: 0420; 程序5-4,5-5
0030: 06A0; CALL,0040; 0031:0040;
0032: 1601; MOV #0505,R1; 0033; 0505;
0040: 1600; MOV,#0001,R0; 0041: 0001; 0042: 0002; RET
5.4 小结
通过本次上机实验,完成了CPU的PUSH,POP,CALL,EET指令的扩充,并完成了微程序设计。上机时,主要时间花在了POP与Push两条指令的扩充上,可能是对堆栈的用法还不太熟悉。
--
--
6 中断系统的设计与调试
6.1 设计目标
完成整个中断过程各个环节的设计
6.2 设计任务
6.2.1 编写中断隐指令的微程序
(1) 保护PC
微地址(H) 080 081 082 083 微指令(H) F0 03000081 E0080082 20030083 00052086 0 7 0 0 F1 8 0 0 0 F2 0 0 0 0 0 0 3 0 微指令字段(H) F3 F4 0 2 0 1 F5 0 0 0 1 F6 0 0 0 0 F7 0 0 0 1 F8 0 0 0 0 F9 084 085 051 086 SPdec SPoe,ARce PCoe,DRce ARoe’,DRoe’,WR 微命令 (2) 保护PSW
微地址(H) 086 087 088 089 微指令(H) F0 03000087 E0080088 00033089 00052097 0 7 0 0 F1 8 0 0 0 F2 0 0 0 0 0 0 0 0 微指令字段(H) F3 F4 0 2 2 1 F5 0 0 0 1 F6 0 0 0 0 F7 0 0 3 1 F8 0 0 0 0 F9 087 088 089 097 SPdec SPoe,ARce PSWoe,ARce ARoe’,DRoe’,WR 微命令 (3) 中断响应信号INTA有效,读出中断向量地址VA
微地址(H) 097 098 微指令(H) F0 00027089 C0080099 0 6 F1 0 0 F2 0 0 0 0 微指令字段(H) F3 F4 0 2 F5 2 0 F6 0 0 F7 7 0 F8 0 0 F9 087 088 INTA,DRce’ DRoe,ARce 微命令
(4) 根据VA,取出中断服务程序的入口地址,送PC,关中断
微地址(H) 099 0A0 微指令(H) F0 000610A0 C4006000 0 6 F1 0 1 F2 0 0 0 0 微指令字段(H) F3 F4 1 0 F5 2 0 F6 0 0 F7 1 6 F8 0 0 F9 0A0 ARoe’,RD,DRce 000 DRoe,PCce,CLI 微命令 6.3 小结
通过本次上机实验,完成了中断系统的设计与调试,,熟悉了中断隐指令的微程序的操作步骤,但多重中断(中断嵌套)还没有完成。
--
因篇幅问题不能全部显示,请点此查看更多更全内容