计算机组成原理课程设计(1)
指令设计
计算机组成原理课程设计
1、完成以下9条指令的设计:
- LDI Rd,#data,
- LDA Rd,adr,
- STA @adr,Rs,
- LDR Rd,@Rs,
- ADD Rd,Rs,
- XOR Rd,Rs,
- JMP adr,
- JZ adr,
- HALT
2.指令设计
序号 |
指令助记符 |
功能介绍 |
实现的功能 |
操作码 |
指令举例 |
二进制机器代码 |
地址 |
微指令 |
地址 |
1 |
LDI Rd,#data |
立即数寻址(双字节指令16位) |
立即数传输 Rdß#data |
0001 |
LDI R0 ,48H |
0001 00 00 0100 1000 |
00 01 |
00B22000 |
01H |
2 |
LDA Rd,adr |
直接寻址(取数) |
R1 <-[adr] |
0010 |
LDA R1 ,[01H] |
0010 01 00 0000 0001 |
02 03 |
00B02020 00122000 |
02H 20H |
3 |
STA @adr,Rs |
间接寻址(存数,将Rs中的内容给[adr]地址) |
R0-> [adr] |
0011 |
STA [0FH] ,R0 |
0011 00 00 0000 1111 |
04 05 |
00B02021 1F102022 1F011000 |
03H 21H 22H |
4 |
LDR Rd,@Rs |
寄存器间接寻址(将RS地址中的数据存到Rs中) |
Rd <-[Rs] |
0100 |
LDR R1,[R0] |
0100 01 00 |
06 |
1A001023 00122000 |
04H 23H |
5 |
ADD Rd,Rs |
寄存器寻址(计算RD和RS的值结果放到Rd中) |
Rd <-Rd+Rs |
0101 |
ADD R1<-R1+R0 |
0101 01 00 |
07 |
89021000 |
05H |
6 |
XOR Rd,Rs |
寄存器间接寻址(异或指令) |
Rd<-Rd异或Rs |
0110 |
XOR R0<-R0+R1 |
0110 00 01 |
08 |
16021000 |
06H |
7 |
JMP adr |
无条件跳转 |
PC<-adr |
0111 |
JMP PC<-adr |
0111 0000 0000 1101 |
09 10 |
00F02000 |
07H |
8 |
HALT |
停机 |
1111 |
11110000 |
11 |
00040000 |
0FH |
||
9 |
HALT |
停机 |
1111 |
11110000 |
12 |
00040000 |
0FH |
||
10 |
LDI Rd,#data |
立即数寻址(双字节指令16位) |
立即数传输 Rdß#data |
0001 |
LDI R1 , |
0001 01 00 11100010 |
13 14 |
00B22000 |
01H |
11 |
ADD Rd,Rs |
寄存器寻址(计算RD和RS的值结果放到Rd中) |
Rd <-Rd+Rs |
0101 |
ADD R1<-R1+R0 |
0101 01 00 |
15 |
89021000 |
05H |
12 |
JZ adr |
条件转移指令(结果为0的转移) |
If ZF=1,PC<-adr |
1000 |
为0跳转到停机的位置 |
1000 0000 00010011 |
16 17 |
00902224 00E02000 00200000 |
08H 25H 24H |
13 |
ADD Rd,Rs |
寄存器寻址(计算RD和RS的值结果放到Rd中) |
Rd <-Rd+Rs |
0101 |
ADD R1<-R1+R0 |
0101 01 00 |
18 |
89021000 |
05H |
14 |
HALT |
停机 |
1111 |
11110000 |
19 |
00040000 |
0FH |
3.每条指令的微指令和仿真图
1. LDI Rd,#data
序号 |
指令助记符 |
功能 |
实现的功能 |
操作码 |
指令举例 |
二进制机器代码 |
地址 |
微指令 |
微指令地址 |
1 |
LDI Rd,#data |
立即数寻址(双字节指令16位) |
立即数传输 Rdß#data |
0001 |
LDI R0 ,48H |
0001 00 00 0100 1000 |
00 01 |
取指令:00B82080 执行指令:00B22000 立即数送R0 |
00H 01H |
通过测试的将48H放到R0寄存器。
2. LDA Rd,adr
序号 |
指令助记符 |
功能 |
实现的功能 |
操作码 |
指令举例 |
二进制机器代码 |
地址 |
微指令 |
微指令地址 |
2 |
LDA Rd,adr |
直接寻址(取数) |
R1 <-[adr] |
0010 |
LDA R1 ,[01H] |
0010 01 00 0000 0001 |
02 03 |
取指令:00B82080 取adr送bus:00B02020 取adr中的内容给R1:00122000 |
00H 02H 20H |
直接寻址,将adr地址对应的内容送到R1寄存器中。通过测试的将[01H]= 48H放到R1寄存器。
3.立即数寻址
序号 |
指令助记符 |
功能 |
实现的功能 |
操作码 |
指令举例 |
二进制机器代码 |
地址 |
微指令 |
微指令地址 |
3 |
STA @adr,Rs |
间接寻址(存数,将Rs中的内容给[adr]地址) |
R0-> [adr] |
0011 |
STA [0FH] ,R0 |
0011 00 00 0000 1111 |
04 05 |
取指令:00B82080 取[adr]:00B02021 取R0的值:1F102022 将R0的值写到[adr]:1F011000 |
00H 03H 21H 22H |
间接寻址,将adr地址内的内容做有效地址。将R0中的内容存到[adr]对应的地址中。
需要更正一下:是将adr取出来送BUS,然后才是adr存AR,取R0送BUS,最后把R0的值存到adr中
更正的截图
4. LDR Rd,@Rs
序号 |
指令助记符 |
功能 |
实现的功能 |
操作码 |
指令举例 |
二进制机器代码 |
地址 |
微指令 |
微指令地址 |
3 |
LDR Rd,@Rs |
寄存器间接寻址(将RS地址中的数据存到Rs中) |
Rd <-[Rs] |
0100 |
LDR R1,[R0] |
0100 01 00 |
06 |
取指令:00B82080 R0中的内容到bus:1A001023 将[R0]地址内的内容取出来存到R1中:00122000 |
00H 04H 23H |
寄存器间接寻址,将Rs中的内容作为地址,从[Rs]地址中取数,将取出来的数存到Rd中。
测试的是将@R0中的内容给了R1。且[48H]=0E。
5. ADD Rd,Rs
序号 |
指令助记符 |
功能 |
实现的功能 |
操作码 |
指令举例 |
二进制机器代码 |
地址 |
微指令 |
微指令地址 |
3 |
ADD Rd,Rs |
寄存器寻址(计算RD和RS的值结果放到Rd中) |
Rd <-Rd+Rs |
0101 |
ADD R1<-R1+R0 |
0101 01 00 |
07 |
取指令:00B82080 相加结果送R1:89021000 |
00H 05H |
将Rd和Rs相加的结果送Rd中。测试的是R0+R1结果送R1,实际上加的两个数是48H+0E=56H。
6. XOR Rd,Rs
序号 |
指令助记符 |
功能 |
实现的功能 |
操作码 |
指令举例 |
二进制机器代码 |
地址 |
微指令 |
微指令地址 |
3 |
XOR Rd,Rs |
寄存器间接寻址(异或指令) |
Rd<-Rd异或Rs |
0110 |
XOR R0<-R0异或R1 |
0110 00 01 |
08 |
取指令:00B82080 异或结果送R1:16021000 |
00H 06H |
将Rd和Rs异或的结果送Rd中。测试的是R0异或R1结果送R0,实际上加的两个数是48H异或56H=1E。
7. JMP adr
序号 |
指令助记符 |
功能 |
实现的功能 |
操作码 |
指令举例 |
二进制机器代码 |
地址 |
微指令 |
微指令地址 |
7 |
JMP adr |
无条件跳转 |
PC<-adr |
0111 |
JMP PC<-adr |
0111 0000 0000 1101 |
09 10 |
取指令:00B82080 取出Adr给Pc:00F02000 |
00H 07H |
8 |
HALT |
停机 |
1111 |
11110000 |
11 |
取指令:00B82080 停机:00040000 |
00H 0F |
||
9 |
HALT |
停机 |
1111 |
11110000 |
12 |
取指令:00B82080 停机:00040000 |
00H 0F |
||
10 |
LDI Rd,#data |
立即数寻址(双字节指令16位) |
立即数传输 Rdß#data |
0001 |
LDI R1 ,E2 |
0001 01 00 11100010 |
13 14 |
取指令:00B82080 执行指令:00B22000 立即数送R1 |
00H 01H |
通过一个JUMP指令跳转到指定的位置,按照正常的执行顺序的话下一个指令的地址应该就是11H,执行到11H就会停机,而现在通过跳转直接跳转到0000 1101=13H地址处去执行LDI指令。
下图是JMP的执行过程:
执行JMP后的LDI过程:为下面的JZ做铺垫的!
8. JZ adr
序号 |
指令助记符 |
功能 |
实现的功能 |
操作码 |
指令举例 |
二进制机器代码 |
地址 |
微指令 |
微指令地址 |
11 |
JZ adr |
条件转移指令(结果为0的转移) |
If ZF=1,PC<-adr |
1000 |
为0跳转到停机的位置
|
1000 0000 00010011 |
16 17 |
取指令:00B82080 取出Adr给Pc:00902224 adr->PC:00E02000 |
00H 08H 25H 24H |
12 |
ADD Rd,Rs |
寄存器寻址(计算RD和RS的值结果放到Rd中) |
Rd <-Rd+Rs |
0101 |
ADD R1<-R1+R0 |
0101 01 00 |
18 |
取指令:00B82080 相加结果送R1:89021000 |
00H 05H |
13 |
HALT |
停机 |
1111 |
11110000 |
19 |
取指令:00B82080 停机:00040000 |
00H 0F |
当ZF=1的时候就是结果为0的标志,测试JZ adr的时候用的是ADD R1,R0的结果,上面算出来为0。当不是0的时候就正常的PC+1,否则就是跳转到指定的位置。比如我写的这个ZF=1的时候直接跳转到停机的位置(第一张图),不是0的时候就正常往下执行(第2张图)。
第1张图:ZF=1。
第二张图:我通过修改第序号等于10的那一步R1的值[对应的地址是0EH,由E2H改为E3H]。从而使得ZF=0。
9. HALT
序号 |
指令助记符 |
功能 |
实现的功能 |
操作码 |
指令举例 |
二进制机器代码 |
地址 |
微指令 |
微指令地址 |
13 |
HALT |
停机 |
1111 |
11110000 |
19 |
取指令:00B82080 执行指令:00B22000 立即数送R1 |
00H 01H |
当执行HALT指令时机器就会停止运行。
10.完整的仿真图
计算机组成原理课程设计(1)相关推荐
- 计算机组成原理认识fpga,计算机组成原理课程设计-基于EDA和FPGA技术的8位模型计算机的设计与实现_精品.doc...
计算机组成原理课程设计-基于EDA和FPGA技术的8位模型计算机的设计与实现_精品 目录 前言2 第一章 课程设计内容2 1.1 实验要求2 1.2 实验目的2 第二章 实验原理及方案2 2.1 实验 ...
- 计算机组成与原理如何书写DEC微指令,计算机组成原理课程设计16位机微程序控制器指令系统设计与实现.doc...
计算机组成原理课程设计16位机微程序控制器指令系统设计与实现 一.设计题目 16位机微程序控制器指令系统的设计与实现 二.设计目的 通过看懂教学计算机组合逻辑控制器中已经设计好并正常运行的几条基本指令 ...
- 2016计算机课程设计,2016年计算机组成原理课程设计-硬布线控制器的设计.doc
2016年计算机组成原理课程设计-硬布线控制器的设计 编 号: 学 号: 课 程 设 计 教 学 院计算机学院课程名称计算机组成原理课程设计题 目硬布线控制器的设计专 业计算机科学与技术班 级二班姓 ...
- 计算机组成原理课设总线,计算机组成原理课程设计(全).doc
文档介绍: 计算机组成原理课程设计(全)成绩评定表学生姓名刘建成班级学号1103050115专业计算机科学与技术课程设计题目多寄存器减法\右移位\输入输出等指令实验计算机设计评语组长签字:成绩日期20 ...
- 计算机组成原理课程设计a,计算机组成原理课程设计报告.doc
计算机组成原理课程设计报告.doc (13页) 本资源提供全文预览,点击全文预览即可全文预览,如果喜欢文档就下载吧,查找使用更方便哦! 9.90 积分 计算机组成原理课程设计报告实验项目:1.设计一 ...
- 重庆大学计算机课程设计,计算机组成原理课程设计报告重庆大学.doc
计算机组成原理课程设计报告重庆大学 计算机组成原理课程设计报告 题目:微程序设计 专业:计算机科学与技术 班级: 指导老师: 目录 一.摘要 二.设计要求 三.微程序控制器原理 四.总体设计 五.测试 ...
- 山东理工大学计算机学院学号,计算机组成原理课程设计--山东理工大学计算机学院...
<计算机组成原理课程设计--山东理工大学计算机学院>由会员分享,可在线阅读,更多相关<计算机组成原理课程设计--山东理工大学计算机学院(14页珍藏版)>请在人人文库网上搜索. ...
- 计算机组成原理4位ALU运算器设计,计算机组成原理课程设计-alu设计和4位锁存器设计.doc...
计算机与通信工程学院 计算机组成原理课程设计 专业名称班级学号学生姓名指导教师设计时间207.12.23~2018.1.3 课程设计任务书 专业:: 学生姓名(签名): 设计题目: 设计实验条件 20 ...
- 西南交通大学计算机组成原理,西南交通大学计算机组成原理课程设计报告
西南交通大学计算机组成原理课程设计报告 (16页) 本资源提供全文预览,点击全文预览即可全文预览,如果喜欢文档就下载吧,查找使用更方便哦! 9.90 积分 <计算机组成实验 C>课程设计适 ...
- 计算机组成原理 陈泽,计算机组成原理 课程设计计算机组成原理 课程设计.doc...
计算机组成原理课程设计报告 姓 名: 班 级: 学 号: 指导老师: 二〇一一年 12月21 日目 录 TOC \o "1-3" \h \z \u HYPERLINK \l &qu ...
最新文章
- matlab中的现代谱估计,请教一个Matlab关于现代功率谱估计的问题
- centos中python2.7被覆盖,yum,python重新安装
- 浅谈 Math.BigMul 方法
- Python编程 高阶函数使用技巧
- PC寄存器为什么会被设定为线程私有
- unity导入素材时材质丢失素材变成粉红色的解决方法
- 您可能不需要翻译您JavaScript
- 第二小节之面向对象上
- 六安:在线监测 精准调控 构建智慧城市节水管理平台
- win7 64位系统PSD缩略图补丁
- Linux-tftp、tftpd-pha安装、使用、配置教程
- D1: elevater design
- linux 日期、星期简写
- UIUC计算机科学系博士,伊利诺伊大学香槟分校计算机系统博士排名
- 一首很好听的英文歌曲Peerless
- Linux对文本查找、检索、统计及替换的常用命令
- [转载]推荐两篇文章
- word中如果出现某一行突然文字突然间距增大,两种解决方案
- 【设计教程】photoshop自由变形工具,透视工具的使用!
- 干货|教你使用Doxygen制作出漂亮程序文档