计组课设微程序设计

上传人:文*** 文档编号:404102 上传时间:2018-08-06 格式:DOCX 页数:28 大小:1.25MB
返回 下载 相关 举报
计组课设微程序设计_第1页
第1页 / 共28页
计组课设微程序设计_第2页
第2页 / 共28页
计组课设微程序设计_第3页
第3页 / 共28页
点击查看更多>>
资源描述
计算机组成原理课程设计报告微程序设计指导老师: 肖铁军,赵蕙 学 院: 计算机学院 班 级: 信息安全 1501 姓 名: 周里威 学 号: 3150604044 一、个人感想这一个多星期的课设做下来真是收获超大,我强烈建议以后的课可以实验课理论课对半开,现在我们的实验课真是太少了,平时上课基本听不懂,没有实验课根本学不到什么。我刚开始学习计算机组成原理这门课程的时候感觉,这课怎么这么难啊,什么也看不懂,什么也听不懂,除了介绍一些基本的概念的时候,都没听懂过课讲真,于是乎考试也是一脸懵逼,就挂了。 。 。 。 。 。 。 。但是其实上课期间的实验课还是挺有意思的,能够让我稍微了解一点计算机组成原理的一丁点,但是并没有什么卵用,我还是对之啥也不懂,在这挂科加上啥也不懂之际,迎来了可亲可爱的课设。课设第一天,我在老师在人没来齐就走了的情况下扯了半小时的蛋才开始问到大神,他说老师让我们自己瞎搞先。 。 。 。 。我当时心里真是一万个 What the hell 跑了出来,后来才了解原来这是老师的良苦用心,要是一开始就讲讲讲我也是啥也听不到,还不如先实际操作一下先,老师再讲,效果更好(但最好也要先告诉我们该干什么) ,于是在大神的帮助下,我开始看书上什么微指令,什么寻址方式,什么汇编指令等等东西,好在我还有之前实验的基础,才看了 10 分钟就看不下去了。 。 。 。 。于是在社霸们的神奇的搜寻下,一个牛逼学长的报告已经在群里传开了,于是我顺利的完成了第一天的任务,虽然是抄的,但是我知道只是抄是没用的,于是我就不厌其烦的叨扰大神,让他给我一点一点得讲了每一条指令,每一个数据通路运行图上各个部件是啥有啥用等等,虽然有些似懂非懂,但是我似乎领悟到了什么。第二天开始,我感觉我每天都能学到很多新知识,经过 4天的洗礼,我感觉我已经从啥也不懂的小白晋级为青铜圣斗士了,有时其他同学不懂的问题我也能回答一些了,就在我觉得我可以爆发小宇宙的时候,堆栈和中断横亘而来,给了我一个猝不及防的打击,前 4 天的任务我已经提前半天完成,可剩下的半天我却一点都整不出来,然而听说隔壁的大神已经开始写报告了。 。 。于是我开始方了,屁颠屁颠的跑去请教大神,于是我又自己加班跟着另一个班一起做,这么难的东西当然要多花时间才能搞定的啦,虽然到最后都没有完全搞定,但是堆栈,中断的基本原理和简单测试还是实现了,这让我感到一丝安慰,突然发现我的感想似乎写得有点长了。 。 。 。 。 。总结一下,实验是个好东西,课设真的很有趣。二、项目任务本项目的任务是针对第 2 章所述的 OpenJUC-II 教学机模型机,设计控制器的微程序,实现该模型机的指令系统。通过课程设计理解指令的执行过程,指令系统与硬件的关系,进而加深对计算机的结构和工作原理的理解。3、报告主体报告我分为三个阶段来描述1 熟悉寻址方式阶段;2 了解算术,逻辑,移位,程序控制等基本常用指令阶段;3 尝试堆栈与中断有关指令阶段;1 熟悉寻址方式阶段阶段开始我当然是熟悉数据通路图上画了什么AR:地址寄存器;DR:数据寄存器;IR:指令寄存器;PC:时钟信号;SP:栈顶指针寄存器; TR:临时寄存器;ALU:运算器; SHIFTER:移位器;A:暂存寄存器;GRS:寄存器组; IB:总线;WD:写;RD:读;PSW:程序状态标志位; XXoe:出口;XXce:入口。此阶段第二步是熟悉基本的微指令,取指令,取源操作数,取目的操作数,执行指令,保存数据。以汇编指令 MOV #0001H, 0033H 为测试(1)取指令的微程序微地址(H) 微指令(H) 微命令 微指令运行效果000 20080001 PCoe,ARoe PC 送出信号 0030 到 AR001 00069002 ARoe,RD,DRce,PCinc主存读出地址 0030 的内容即测试汇编指令到 DR002 CC000003 DRoe,IRce DR 把指令送到 IR003 00000404 BM=2BM=2 是多分支转移,取源操作数入口为 004,所以转向 004H。(2)取源操作数微程序微地址(H) 微指令(H) 微命令 微指令运行效果004 00000A08 BM=5 取源操作数入口 BM=5,NA=008H 为寄存器寻址,立即寻址入口为 00BH。00B 20080012 PCoe,ARce PC 送出信号 0031 到 AR012 00069016 ARoe,RD,DRce,PCinc主存读出地址 0031 的内容即源操作数到 DR016 D000006 DRoe,TRce 立即寻址直接把立即数放入 TR取出的源操作数放在 TR 中,转到取目的操作数的微程序入口 006H(3)取目的操作数微程序微地址(H) 微指令(H) 微命令 微指令运行效果006 00000A28 BM=5 取目的操作数入口BM=5,NA=028H 为寄存器寻址,直接寻址入口为 02CH。02C 20080033 PCoe,ARce PC 送出信号 0032 到 AR033 00069034 ARoe,RD,DRce,PCinc主存读出地址 0032 的内容即目的操作数到 DR034 C0080035 DRoe,ARce 直接寻址把地址从 DR 送到 AR035 00061036 ARoe,RD,DRce 直接寻址中没用036 D4000007 DRoe,TRce 直接寻址中没用取出的目的操作数放在 A 中,转到执行指令的微程序入口 007H(4)执行阶段微程序双操作数赋值指令 MOV 的微程序入口地址为 041H微地址(H) 微指令(H) 微命令 微指令运行效果007 00000800 NOP 跳转到 MOV 的微指令041 94000040 TRoe,Ace 把 TR 中保存的数据送入 A040 00300E50 SVce,BM=7 把 A 中的数据送入 SHIFTER将结果保存在主存中,依 Md 转移,所以转到 051H051 60030052 Soe,DRce 把 SHIFTER 中的数据送入 DR052 00052200 ARoe,DRoe,WR 数据 0001 写入地址 0033 里指令执行结果:把 0001 写入 0033 地址中。(1)取指令的微程序配图(2)取源操作数微程序配图(3)取目的操作数微程序配图(4)执行阶段微程序配图前面使用了立即寻址以及直接寻址,以下为其他寻址方式的微程序。(1)寄存器寻址取源操作数阶段微地址(H) 微指令(H) 微命令008 D0000006 GRSoe,TRce取目的操作数阶段微地址(H) 微指令(H) 微命令028 D4000007 GRSoe,TRce(2)寄存器间接寻址取源操作数阶段微地址(H) 微指令(H) 微命令008 50000006 GRSoe,TRce取目的操作数阶段微地址(H) 微指令(H) 微命令028 54000007 GRSoe,Ace(3)寄存器自增间接寻址取源操作数阶段微地址(H) 微指令(H) 微命令00A 54080010 GRSoe,Ace,ARce010 02700011 INC,SVce011 68000015 Soe,GRSce取目的操作数阶段微地址(H) 微指令(H) 微命令02A 54080030 GRSoe,Ace,ARce030 02700031 INC,SVce031 68000035 Soe,GRSce(4)立即寻址取源操作数阶段微地址(H) 微指令(H) 微命令00B 20080012 PCoe,ARce012 00069016 ARoe,RD,DRce,PCinc取目的操作数阶段微地址(H) 微指令(H) 微命令02B 00000007 NOP(5)直接寻址取源操作数阶段微地址(H) 微指令(H) 微命令00C 20080013 PCoe,ARce013 00069014 ARoe,RD,DRce,PCinc014 C0080015 DRoe,ARce015 00061016 ARoe,RD,DRce016 D0000006 DRoe,Tce取目的操作数阶段微地址(H) 微指令(H) 微命令02C 20080033 PCoe,ARce033 00069034 ARoe,RD,DRce,PCinc034 C0080035 DRoe,ARce035 00061036 ARoe,RD,DRce036 D4000007 DRoe,Ace(6)间接寻址取源操作数阶段微地址(H) 微指令(H) 微命令00D 20080017 PCoe,ARce017 00069018 ARoe,RD,DRce,PCinc018 C0080019 DRoe,ARce019 00061014 ARoe,RD,DRce取目的操作数阶段微地址(H) 微指令(H) 微命令02D 20080037 PCoe,ARce037 00069038 ARoe,RD,DRce,PCinc038 C0080039 DRoe,ARce039 00061034 ARoe,RD,DRce(7)变址寻址取源操作数阶段微地址(H) 微指令(H) 微命令00E 2008001A PCoe,ARce01A 0006901B ARoe,RD,DRce,PCinc01B D400001C DRoe,Ace01C 40700020 GRSoe,ADD,SVce020 60080015 Soe,ARce取目的操作数阶段微地址(H) 微指令(H) 微命令02E 2008003A PCoe,ARce03A 0006903B ARoe,RD,DRce,PCinc03B D400003C DRoe,Ace03C 40700032 GRSoe,ADD,SVce032 60080035 Soe,ARce(8)相对寻址取源操作数阶段微地址(H) 微指令(H) 微命令00F 2008001D PCoe,ARce01D 0006901E ARoe,RD,DRce,PCinc01E D400001F DRoe,Ace01F 20700020 PCoe,ADD,SVce取目的操作数阶段微地址(H) 微指令(H) 微命令02F 2008003D PCoe,ARce03D 0006903E ARoe,RD,DRce,PCinc03E D400003F DRoe,Ace03F 20700035 PCoe,ADD,SVce2 了解算术,逻辑,移位,程序控制等基本常用指令阶段汇编指令 微地址(H)微指令(H) 微命令MOV(赋值) 041 94000040 TRoe,aceMOV 040 00300E50 SVce,BM=7ADD(加 ) 042 98700E50 TRoe,ADD,SVce,PSWce,BM=7ADDC(带进位加 ) 043 98B00E50 TRoe,ADDC,SVce,PSWce,BM=7SUB(减) 044 98F00E50 TRoe,SUB,SVce,PSWce,BM=7SUBB(带进位减 ) 045 99300E50 TRoe,SUBB,SVce,PSWce,BM=7AND(与) 046 99700E50 TRoe,AND,SVce,PSWce,BM=7OR(或 ) 047 99B00E50 TRoe,OR,SVce,PSWce,BM=7XOR(异或) 048 9A300E50 TRoe,XOR,SVce,PSWce,BM=7CMP(比较 ) 049 98C00200 TRoe,SUB,PSWce,BM=1TEST(测试) 04A 99400200 TRoe,AND,PSWce,BM=1SAR(算术右移) 061 不会SHL(逻辑左移) 062 18200E50 PSWce,SLce,BM=7SHR(逻辑右移 ) 063 18100E50 PSWce,SRce,BM=7ROL(循环左移) 064 00200E50 SLce,BM=7ROR(循环右移) 065 00100E50 SRce,BM=7RCL(进位循环左移) 066 不会RCR(进位循环右移) 067 不会JC(CF=1 跳) 068 00000626 BM=3JNC(CF=0 跳 ) 069 00000626 BM=3JO(OF=1 跳) 06A 00000626 BM=3JNO(OF=0 跳) 06B 00000626 BM=3JZ(ZF=1 跳) 06C 00000626 BM=3JNZ(ZF=0 跳) 06D 00000626 BM=3JS(SF=1 跳) 06E 00000626 BM=3JNS(SF=0 跳) 06F 00000626 BM=3J(条件不满足) 026 00000200 BM=1J(条件满足 ) 027 A4000200 ARoe,PCce,BM=7JMP(跳转) 070 A4000200 ARoe,PCce,BM=1INC(自增) 071 1A700E50 PSWce,INC,SVce,BM=7DEC(自减 ) 072 1AB00E50 PSWce,DEC,SVce,BM=7NOT(取反) 073 19F00E50 PSWce,NOT,SVce,BM=7HALT(停机) 058 00000058 NOPNOP(空 ) 059 00000200 BM=1部分指令配图MOV 指令 1MOV 指令 2ADD 指令CMP 指令SHR 指令INC 指令3 尝试堆栈与中断有关指令阶段1)堆栈入栈 PUSH微地址(H) 微指令(H) 微命令 微指令运行效果078 0030009B SVce 把 A 中的目的操作数放入 SHFTER09B 6003009C Soe,DRce 把 SHFTER 中的目的操作数放入DR09C F400009D SPoe,Ace 把栈顶指针地址放入 A 中09D 02B0009E DEC,SVce 把栈顶指针地址减一放入 SHFTER09E 7C080052 Soe,ARce,SPce 把减了 1 的栈顶地址放入 AR 和SP入栈配图 1入栈配图 2出栈 POP微地址(H) 微指令(H) 微命令 微指令运行效果079 B000009F ARoe,TRce AR 把取到的目的操作数放入 TR0A0 02C610A1 SPinc,ARoe,DRce,RD 读出栈内的内容到 DR0A1 D40000A2 DRoe,Ace DR 把栈内的信息送到 A0A2 003000A3 SVce A 把栈内的信息送到 SHFTER0A3 80080051 TRoe,ARce TR 把保存的目的操作数送回 AR出栈配图 1出栈配图 2出栈配图 3测试汇编指令(如上图)MOV #0051H, R2PUSH R2PUSH 0050HPOP 0053HPOP (R2)CALL 指令微地址(H) 微指令(H) 微命令 微指令运行效果07A B00000A4 ARoe,TRce AR 把取到的目的操作数放入 TR0A4 230300A5 SPdec,PCoe,DRce PC 送到 DR,栈顶指针减 10A5 E00800A6 SPoe,ARce 栈顶指针送到 AR0A6 84000052 TRoe,PCce TR 把取到的目的操作数放入 PCRET 指令微地址(H) 微指令(H) 微命令 微指令运行效果05A E00800A7 SPoe,ARce SP 把栈顶指针送到 AR0A7 02C610A8 SPinc,ARoe,DRce,RD 主存读出栈中内容 DR0A8 C4000000 DRoe,PCce DR 把保存的内容送到 PC2)中断微地址(H) 微指令(H) 微命令 微指令运行效果EI 开中断05C 00005200 STI,BM=1 开中断,BM=1,依中断转移DI 关中断05D 00006200 CLI,BM=1 关中断,BM=1,依中断转移中断隐指令080 F4000081 SPoe,Ace 把栈顶指针地址放入 A 中081 22B30082 PCoe,DEC,SVce,DRce 把 A 中的栈顶指针地址自减 1放入移位寄存器中,PC 送到DR082 74080083 Soe,Ace,ARce 把移位寄存器栈顶指针地址放入 A 和 AR 中083 00052084 ARoe,DRoe,WR 把 PC 写入栈中084 02B33085 DEC,SVce,DRce,PWSoe 栈顶指针自减 1 放入移位寄存器,PSW 送到 DR085 7C080086 Soe,SPce,ARce 把移位寄存器栈顶指针地址放入 A 和 SP 中086 00052087 ARoe,DRoe,WR 把 PSW 写入栈中087 00027088 Droe,INTA 中断088 C0080089 DRoe,ARce 取到中断向量表放入 AR089 0006108A ARoe,DRoe,RD 主存读出中断地址08A C4006000 DRoe,PCce,CLI 中断地址送到 PCRETI 中断返回05B E00800A9 SPoe,ARce 把栈顶指针地址放入 AR 中0A9 02C610AA SPinc,ARoe,DRce,RD 栈顶指针自减 1,读出栈中保存的 PSW 信息到 DR0AA C00040AB DRoe,PSWce 把 PSW 信息从 DR 放回 PSW0AB E00800AC SPoe,ARce 把栈顶指针地址放入 AR 中0AC 02C610AD SPinc,ARoe,DRce,RD 栈顶指针自减 1,读出栈中保存的 PC 信息到 DR0AD C4005000 DRoe,PCce,STI 把 PC 信息从 DR 放回 PC测试汇编指令MOV #0050H, 0000HMOV #FFFEH, FF00HEIAD: MOV #0003H,R1NOPDEC R1JNZ FFCH(PC)NOT FF02HJMP AD0050H : MOV FF08H,R4RETI中断隐指令配图 1中断隐指令配图 2RETI 指令配图 1RETI 指令配图 2报告完毕鸣谢:肖铁军老师,赵蕙老师以及帮助过我的同学们参考书籍:计算机组成原理 主编 肖铁军 清华大学出版社计算机组成原理实践教程 肖铁军 赵蕙等编著 清华大学出版社
展开阅读全文
相关资源
正为您匹配相似的精品文档
相关搜索

最新文档


当前位置:首页 > 生活休闲 > 生活常识


copyright@ 2023-2025  zhuangpeitu.com 装配图网版权所有   联系电话:18123376007

备案号:ICP2024067431-1 川公网安备51140202000466号


本站为文档C2C交易模式,即用户上传的文档直接被用户下载,本站只是中间服务平台,本站所有文档下载所得的收益归上传人(含作者)所有。装配图网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。若文档所含内容侵犯了您的版权或隐私,请立即通知装配图网,我们立即给予删除!