指令设计

计算机组成原理课程设计

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
PC+1->PC:00200000

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)相关推荐

  1. 计算机组成原理认识fpga,计算机组成原理课程设计-基于EDA和FPGA技术的8位模型计算机的设计与实现_精品.doc...

    计算机组成原理课程设计-基于EDA和FPGA技术的8位模型计算机的设计与实现_精品 目录 前言2 第一章 课程设计内容2 1.1 实验要求2 1.2 实验目的2 第二章 实验原理及方案2 2.1 实验 ...

  2. 计算机组成与原理如何书写DEC微指令,计算机组成原理课程设计16位机微程序控制器指令系统设计与实现.doc...

    计算机组成原理课程设计16位机微程序控制器指令系统设计与实现 一.设计题目 16位机微程序控制器指令系统的设计与实现 二.设计目的 通过看懂教学计算机组合逻辑控制器中已经设计好并正常运行的几条基本指令 ...

  3. 2016计算机课程设计,2016年计算机组成原理课程设计-硬布线控制器的设计.doc

    2016年计算机组成原理课程设计-硬布线控制器的设计 编 号: 学 号: 课 程 设 计 教 学 院计算机学院课程名称计算机组成原理课程设计题 目硬布线控制器的设计专 业计算机科学与技术班 级二班姓 ...

  4. 计算机组成原理课设总线,计算机组成原理课程设计(全).doc

    文档介绍: 计算机组成原理课程设计(全)成绩评定表学生姓名刘建成班级学号1103050115专业计算机科学与技术课程设计题目多寄存器减法\右移位\输入输出等指令实验计算机设计评语组长签字:成绩日期20 ...

  5. 计算机组成原理课程设计a,计算机组成原理课程设计报告.doc

    计算机组成原理课程设计报告.doc (13页) 本资源提供全文预览,点击全文预览即可全文预览,如果喜欢文档就下载吧,查找使用更方便哦! 9.90 积分 计算机组成原理课程设计报告实验项目:1.设计一 ...

  6. 重庆大学计算机课程设计,计算机组成原理课程设计报告重庆大学.doc

    计算机组成原理课程设计报告重庆大学 计算机组成原理课程设计报告 题目:微程序设计 专业:计算机科学与技术 班级: 指导老师: 目录 一.摘要 二.设计要求 三.微程序控制器原理 四.总体设计 五.测试 ...

  7. 山东理工大学计算机学院学号,计算机组成原理课程设计--山东理工大学计算机学院...

    <计算机组成原理课程设计--山东理工大学计算机学院>由会员分享,可在线阅读,更多相关<计算机组成原理课程设计--山东理工大学计算机学院(14页珍藏版)>请在人人文库网上搜索. ...

  8. 计算机组成原理4位ALU运算器设计,计算机组成原理课程设计-alu设计和4位锁存器设计.doc...

    计算机与通信工程学院 计算机组成原理课程设计 专业名称班级学号学生姓名指导教师设计时间207.12.23~2018.1.3 课程设计任务书 专业:: 学生姓名(签名): 设计题目: 设计实验条件 20 ...

  9. 西南交通大学计算机组成原理,西南交通大学计算机组成原理课程设计报告

    西南交通大学计算机组成原理课程设计报告 (16页) 本资源提供全文预览,点击全文预览即可全文预览,如果喜欢文档就下载吧,查找使用更方便哦! 9.90 积分 <计算机组成实验 C>课程设计适 ...

  10. 计算机组成原理 陈泽,计算机组成原理 课程设计计算机组成原理 课程设计.doc...

    计算机组成原理课程设计报告 姓 名: 班 级: 学 号: 指导老师: 二〇一一年 12月21 日目 录 TOC \o "1-3" \h \z \u HYPERLINK \l &qu ...

最新文章

  1. matlab中的现代谱估计,请教一个Matlab关于现代功率谱估计的问题
  2. centos中python2.7被覆盖,yum,python重新安装
  3. 浅谈 Math.BigMul 方法
  4. Python编程 高阶函数使用技巧
  5. PC寄存器为什么会被设定为线程私有
  6. unity导入素材时材质丢失素材变成粉红色的解决方法
  7. 您可能不需要翻译您JavaScript
  8. 第二小节之面向对象上
  9. 六安:在线监测 精准调控 构建智慧城市节水管理平台
  10. win7 64位系统PSD缩略图补丁
  11. Linux-tftp、tftpd-pha安装、使用、配置教程
  12. D1: elevater design
  13. linux 日期、星期简写
  14. UIUC计算机科学系博士,伊利诺伊大学香槟分校计算机系统博士排名
  15. 一首很好听的英文歌曲Peerless
  16. Linux对文本查找、检索、统计及替换的常用命令
  17. [转载]推荐两篇文章
  18. word中如果出现某一行突然文字突然间距增大,两种解决方案
  19. 【设计教程】photoshop自由变形工具,透视工具的使用!
  20. 干货|教你使用Doxygen制作出漂亮程序文档

热门文章

  1. 监视器 RUIGE瑞鸽高清监视器TL-S1700HD
  2. php获取数据库表中总记录行数并打印
  3. Android—RadioButton(单选框)和CheckBox(复选框)
  4. 我所有博客都在http://blog.csdn.com/lpy3654321
  5. Android app UI自动化测试 常用的元素定位方法
  6. 一个编程小白的Java SE学习日志 Ⅷ——接口、异常【极客BOY-米奇】
  7. 面试遇到TCP,读完这篇就够了!
  8. Docker入门 服务部署的艺术
  9. Java实现阴历日历表(附带星座)
  10. 胸大肌(06):蝶机夹胸