计组课设微程序设计_第1页
计组课设微程序设计_第2页
计组课设微程序设计_第3页
计组课设微程序设计_第4页
计组课设微程序设计_第5页
已阅读5页,还剩23页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

计算机组成原理 课程设计报告 微程序设计 指导老师: 肖铁军,赵蕙 学 院: 计算机学院 班 级: 信息安全 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 到 AR 001 00069002 ARoe,RD,DRce, PCinc 主存读出地址 0030 的内容即 测试汇编指令到 DR 002 CC000003 DRoe,IRce DR 把指令送到 IR 003 00000404 BM=2 BM=2 是多分支转移,取源操作数入口为 004,所以转向 004H。 (2)取源操作数微程序 微地址(H) 微指令(H) 微命令 微指令运行效果 004 00000A08 BM=5 取源操作数入口 BM=5,NA=008H 为寄存器寻址,立即寻址入口为 00BH。 00B 20080012 PCoe,ARce PC 送出信号 0031 到 AR 012 00069016 ARoe,RD,DRce, PCinc 主存读出地址 0031 的内容即 源操作数到 DR 016 D000006 DRoe,TRce 立即寻址直接把立即数放入 TR 取出的源操作数放在 TR 中,转到取目的操作数的微程序入口 006H (3)取目的操作数微程序 微地址(H) 微指令(H) 微命令 微指令运行效果 006 00000A28 BM=5 取目的操作数入口 BM=5,NA=028H 为寄存器寻址,直接寻址入口为 02CH。 02C 20080033 PCoe,ARce PC 送出信号 0032 到 AR 033 00069034 ARoe,RD,DRce, PCinc 主存读出地址 0032 的内容即 目的操作数到 DR 034 C0080035 DRoe,ARce 直接寻址把地址从 DR 送到 AR 035 00061036 ARoe,RD,DRce 直接寻址中没用 036 D4000007 DRoe,TRce 直接寻址中没用 取出的目的操作数放在 A 中,转到执行指令的微程序入口 007H (4)执行阶段微程序 双操作数赋值指令 MOV 的微程序入口地址为 041H 微地址(H) 微指令(H) 微命令 微指令运行效果 007 00000800 NOP 跳转到 MOV 的微指令 041 94000040 TRoe,Ace 把 TR 中保存的数据送入 A 040 00300E50 SVce,BM=7 把 A 中的数据送入 SHIFTER 将结果保存在主存中,依 Md 转移,所以转到 051H 051 60030052 Soe,DRce 把 SHIFTER 中的数据送入 DR 052 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,ARce 010 02700011 INC,SVce 011 68000015 Soe,GRSce 取目的操作数阶段 微地址(H) 微指令(H) 微命令 02A 54080030 GRSoe,Ace,ARce 030 02700031 INC,SVce 031 68000035 Soe,GRSce (4)立即寻址 取源操作数阶段 微地址(H) 微指令(H) 微命令 00B 20080012 PCoe,ARce 012 00069016 ARoe,RD,DRce,PCinc 取目的操作数阶段 微地址(H) 微指令(H) 微命令 02B 00000007 NOP (5)直接寻址 取源操作数阶段 微地址(H) 微指令(H) 微命令 00C 20080013 PCoe,ARce 013 00069014 ARoe,RD,DRce,PCinc 014 C0080015 DRoe,ARce 015 00061016 ARoe,RD,DRce 016 D0000006 DRoe,Tce 取目的操作数阶段 微地址(H) 微指令(H) 微命令 02C 20080033 PCoe,ARce 033 00069034 ARoe,RD,DRce,PCinc 034 C0080035 DRoe,ARce 035 00061036 ARoe,RD,DRce 036 D4000007 DRoe,Ace (6)间接寻址 取源操作数阶段 微地址(H) 微指令(H) 微命令 00D 20080017 PCoe,ARce 017 00069018 ARoe,RD,DRce,PCinc 018 C0080019 DRoe,ARce 019 00061014 ARoe,RD,DRce 取目的操作数阶段 微地址(H) 微指令(H) 微命令 02D 20080037 PCoe,ARce 037 00069038 ARoe,RD,DRce,PCinc 038 C0080039 DRoe,ARce 039 00061034 ARoe,RD,DRce (7)变址寻址 取源操作数阶段 微地址(H) 微指令(H) 微命令 00E 2008001A PCoe,ARce 01A 0006901B ARoe,RD,DRce,PCinc 01B D400001C DRoe,Ace 01C 40700020 GRSoe,ADD,SVce 020 60080015 Soe,ARce 取目的操作数阶段 微地址(H) 微指令(H) 微命令 02E 2008003A PCoe,ARce 03A 0006903B ARoe,RD,DRce,PCinc 03B D400003C DRoe,Ace 03C 40700032 GRSoe,ADD,SVce 032 60080035 Soe,ARce (8)相对寻址 取源操作数阶段 微地址(H) 微指令(H) 微命令 00F 2008001D PCoe,ARce 01D 0006901E ARoe,RD,DRce,PCinc 01E D400001F DRoe,Ace 01F 20700020 PCoe,ADD,SVce 取目的操作数阶段 微地址(H) 微指令(H) 微命令 02F 2008003D PCoe,ARce 03D 0006903E ARoe,RD,DRce,PCinc 03E D400003F DRoe,Ace 03F 20700035 PCoe,ADD,SVce 2 了解算术,逻辑,移位,程序控制等基本常用指令阶段 汇编指令 微地址 (H) 微指令(H) 微命令 MOV(赋值) 041 94000040 TRoe,ace MOV 040 00300E50 SVce,BM=7 ADD(加 ) 042 98700E50 TRoe,ADD,SVce,PSWce,BM=7 ADDC(带进位加 ) 043 98B00E50 TRoe,ADDC,SVce,PSWce,BM=7 SUB(减) 044 98F00E50 TRoe,SUB,SVce,PSWce,BM=7 SUBB(带进位减 ) 045 99300E50 TRoe,SUBB,SVce,PSWce,BM=7 AND(与) 046 99700E50 TRoe,AND,SVce,PSWce,BM=7 OR(或 ) 047 99B00E50 TRoe,OR,SVce,PSWce,BM=7 XOR(异或) 048 9A300E50 TRoe,XOR,SVce,PSWce,BM=7 CMP(比较 ) 049 98C00200 TRoe,SUB,PSWce,BM=1 TEST(测试) 04A 99400200 TRoe,AND,PSWce,BM=1 SAR(算术右移) 061 不会 SHL(逻辑左移) 062 18200E50 PSWce,SLce,BM=7 SHR(逻辑右移 ) 063 18100E50 PSWce,SRce,BM=7 ROL(循环左移) 064 00200E50 SLce,BM=7 ROR(循环右移) 065 00100E50 SRce,BM=7 RCL(进位循环左移) 066 不会 RCR(进位循环右移) 067 不会 JC(CF=1 跳) 068 00000626 BM=3 JNC(CF=0 跳 ) 069 00000626 BM=3 JO(OF=1 跳) 06A 00000626 BM=3 JNO(OF=0 跳) 06B 00000626 BM=3 JZ(ZF=1 跳) 06C 00000626 BM=3 JNZ(ZF=0 跳) 06D 00000626 BM=3 JS(SF=1 跳) 06E 00000626 BM=3 JNS(SF=0 跳) 06F 00000626 BM=3 J(条件不满足) 026 00000200 BM=1 J(条件满足 ) 027 A4000200 ARoe,PCce,BM=7 JMP(跳转) 070 A4000200 ARoe,PCce,BM=1 INC(自增) 071 1A700E50 PSWce,INC,SVce,BM=7 DEC(自减 ) 072 1AB00E50 PSWce,DEC,SVce,BM=7 NOT(取反) 073 19F00E50 PSWce,NOT,SVce,BM=7 HALT(停机) 058 00000058 NOP NOP(空 ) 059 00000200 BM=1 部分指令配图 MOV 指令 1 MOV 指令 2 ADD 指令 CMP 指令 SHR 指令 INC 指令 3 尝试堆栈与中断有关指令阶段 1)堆栈 入栈 PUSH 微地址(H) 微指令(H) 微命令 微指令运行效果 078 0030009B SVce 把 A 中的目的操作数放入 SHFTER 09B 6003009C Soe,DRce 把 SHFTER 中的目的操作数放入 DR 09C F400009D SPoe,Ace 把栈顶指针地址放入 A 中 09D 02B0009E DEC,SVce 把栈顶指针地址减一放入 SHFTER 09E 7C080052 Soe,ARce,SPce 把减了 1 的栈顶地址放入 AR 和 SP 入栈配图 1 入栈配图 2 出栈 POP 微地址(H) 微指令(H) 微命令 微指令运行效果 079 B000009F ARoe,TRce AR 把取到的目的操作数放入 TR 0A0 02C610A1 SPinc,ARoe,DRce,RD 读出栈内的内容到 DR 0A1 D40000A2 DRoe,Ace DR 把栈内的信息送到 A 0A2 003000A3 SVce A 把栈内的信息送到 SHFTER 0A3 80080051 TRoe,ARce TR 把保存的目的操作数送回 AR 出栈配图 1 出栈配图 2 出栈配图 3 测试汇编指令(如上图) MOV #0051H, R2 PUSH R2 PUSH 0050H POP 0053H POP (R2) CALL 指令 微地址(H) 微指令(H) 微命令 微指令运行效果 07A B00000A4 ARoe,TRce AR 把取到的目的操作数放入 TR 0A4 230300A5 SPdec,PCoe,DRce PC 送到 DR,栈顶指针减 1 0A5 E00800A6 SPoe,ARce 栈顶指针送到 AR 0A6 84000052 TRoe,PCce TR 把取到的目的操作数放入 PC RET 指令 微地址(H) 微指令(H) 微命令 微指令运行效果 05A E00800A7 SPoe,ARce SP 把栈顶指针送到 AR 0A7 02C610A8 SPinc,ARoe,DRce,RD 主存读出栈中内容 DR 0A8 C4000000 DRoe,PCce DR 把保存的内容送到 PC 2)中断 微地址(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 送到 DR 082 74080083 Soe,Ace,ARce 把移位寄存器栈顶指针地址放 入 A 和 AR 中 083 00052084 ARoe,DRoe,WR 把 PC 写入栈中 084 02B33085 DEC,SVce,DRce,PWSoe 栈顶指针自减 1 放入移位寄存 器,P

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论