本文章主要是为了通俗的解释计算机组成实验的微程序汇编的实现方法:

实验目的

在掌握部件单元电路实验的基础上,初步了解如何基于微程序控制进行CPU设计。

实验软件

Dais-CMStudio

实验要求

1、学习教材3.1,3.2节,熟悉联机方式下的开发环境。

2、完成以下内容:

任务1:用汇编语言编写一个源程序,完成以下功能:

从I/O输入56h,并存入内存的18号单元;

从I/O输入78h,存入寄存器R0;

将两者相加,存入19号单元;

将19号单元的内容输出到I/O显示。

任务2:增加一条减法指令,指令格式如下:

指令格式:SUB  R0, [addr]

机器指令码:11000000  XXXXXXXX  XXXXXXXX

说明:R0 - [addr]→R0

任务3:增加一条寄存器加法指令,指令格式如下:

指令格式:ADR  Rd, Rs

机器指令码:1110RdRs

说明:Rd + Rs→Rd

任务实现

任务1:因为软件内已经含有了5条基本指令助记符等的内容了,我们直接使用进行汇编即可(打开CMX16文件的MXJ6.ASM)

具体实现的汇编代码如下:

IN  R0,IOL          (将IO低位的数据存入R0通用寄存器)

STA 0018h,R0    (将R0中的数据存入内存的18号单元)

IN  R0,IOL

ADD R0,0018h   (将0018h号单元的内存数据与R0相加存入R0)

STA 0019h,R0    (将R0中的数据存入内存的19号单元)

OUT IOH ,0019  (在IO高位地址输出0019h号单元的内存数据)

JMP  START

任务2:我们需要在指令系统中先模仿ADD助记符添加一条SUB的助记符,由机器指令码11000000转化为16进制得到C0,因此的到SUB的助记符为:SUB         R0,*        C0        3             ;R0 - [addr]→R0

接下来就是计算该机器指令码对应的微程序的微地址:

每条指令的微程序入口地址怎样确定?

位号:10 9   8     7     6      5 4 3 2 1 0

内容:1   1  IR7  IR6 IR5    0 0 0 0 0 0    (红色即为上面的机器指令码,将其带入即可)

因此计算的SUB给出的这个机器指令码要求的入口地址为0780(这是上面内容从后开始4位4位的转换为16进制的结果。入口地址就是当程序运行到这条指令时会根据你的助记符中的机器指令码结合这个计算方法自动跳到微地址为780的地方继续运行)

那么接下来就容易了,在程序本身存在ADD指令的情况下,我们只需要照抄就行,将ADD微地址入口为0680开始的微指令照抄到SUB的微地址入口0780,然后将最后一条微指令的CPU加法运算改为减法运算就行。(即M=0,S2=1,S1=0,S0=1)

(第一条微指令的微地址为0780,这样应该明白了吧~)

然后只需要把任务1的ADD改成SUB进行操作就可以验证你写的对不对了~

任务3:

思考:首先要将Rd作为源寄存器将数据放入AXL中,再将Rs作为源寄存器源寄存器将数据放入BXL中,将(AX+BX)L的结果存入Rd中即可。现在在问题是如何处理将Rd和Rs分别作为源寄存器,然而对于Rd和Rs寄存器,我们只要写好指令系统里的助记符就行。(如果用C++来解释就类似一个函数入口吧)

这里需要补充知识点:通用寄存器就是实验箱上面的DX(R3,R2)和CX(R1,R0)

因此查看R0通用寄存器的数据就是看CX的后2位就行,其他同理。

然后根据题目要求的机械指令码为1110RdRs

Rs或Rd

选定的寄存器

00

01

10

11

R0

R1

R2

R3

具体实现见下:(如果上面看不懂请先继续看下去,在回来看估计会恍然大悟,我也是摸了挺久的~)

首先是添加指令系统的助记符:

助记符  操作数    指令码    指令长度

通过编码规则可得到    ADR    R0 ,R0     E0          1      ;

ADR    R0 ,R1      E1          1      ;

ADR    R0 ,R2      E2          1      ;

ADR     R0 ,R3     E3          1      ;

…(以下省略12条,类比上面写下去即可)

至于IN的助记符也需要修改为   IN    R0,IOL    20      1;

                                               IN   R1,IOL    21       1;

                                               IN    R2,IOL   22       1;

                                               IN   R3,IOL    23       1;

(上面的助记符很多,但是他们单纯只是2条指令而已,不要误会~)

他们的指令码如何计算呢,下面举个李子就知道了:

下面详细解说一下指令码如何计算还有通过指令码如何得到该“函数”的微指令入口地址:

机器是通过计算机器指令码去到相应的微指令入口地址的,具体实现就是

位号:10 9    8      7    6      5 4 3 2 1 0

内容:1   1   IR7  IR6 IR5    0 0 0 0 0 0 =>   07C0

(标彩色的部分就是机器指令码,而4,3组成Rs,2,1组成Rd,可以参考上面通用寄存器的表)

这个就是ADR  R0 ,R0  E0     1   ;这条助记符的微指令入口位置。

那么我们只需要从7C0这个位置开始修改就行。

至于ADR的其他助记符的微指令入口地址就不用计算了,机器会自动根据你的助记符R0~R3翻译得到相应的通用寄存器进行操作。(具体我也不清楚,看到他微指令是那么跑的,期初我修改了微指令4处想要实现IN的操作,可是写了发现它并不运行我写的后面三条,数据却是正确的存入了对应的通用寄存器)

至于微指令怎么写,这里先要提醒一点就是我们是通过XP来确定你的Rs和Rd的,因此在读通用寄存器数据时根据XP的0和1来改变你使用的是哪个通用寄存器(Rs或Rd)

注意:下面这个任务三的微指令表中目录行的第二个S2应该为S1(即M12下面那个是S1)

大致是上面这样吧,反正我实验成功了,若是Rs或者Rd反了可以修改的是它们的Xp的0,1值(至于溢出测试也没有测,实验时间有限,心有余而力不足)

具体实现我懒的在写一次,增加一条指令无非就是修改2处,1:指令系统的助记符;2:计算出对应微地址然后写微指令即可!

如果有错误请指出,谢谢~

计算机组成与系统结构实验-基于微程序控制的CPU设计相关推荐

  1. 计算机组成原理分时传送电路设计,计算机组成原理和系统结构实验仪,FPGA设计,上海求育...

    原标题:计算机组成原理和系统结构实验仪,FPGA设计,上海求育 上海求育QY-JXSY46计算机组成原理与系统结构实验箱 上海求育QY-JXSY46计算机组成原理与系统结构实验箱是采用八位机主板和十六 ...

  2. 计算机组成与系统结构输入输出控制实验,计算机组成原理与系统结构实验指导书...

    计算机组成原理与系统结构实验指导书 (57页) 本资源提供全文预览,点击全文预览即可全文预览,如果喜欢文档就下载吧,查找使用更方便哦! 21.9 积分 计算机实验室实验预习报告专业名称(班级) 姓名 ...

  3. 计算机组成与系统 报告,计算机组成与系统结构实验报告2

    计算机组成与系统结构实验报告,西北工业大学 评语: 课中检查完成的题号及题数: 成绩: 自评成绩: 95 课后完成的题号与题数: 实验报告 实验名称: 班级: 1.4 CPU 与简单模型机设计实验 日 ...

  4. 计算机组成原理实验箱D7,计算机组成原理与系统结构实验仪教学设备,上海求育...

    原标题:计算机组成原理与系统结构实验仪教学设备,上海求育 上海求育QY-JXSY30计算机组成原理与系统结构实验箱 上海求育QY-JXSY30计算机组成原理与系统结构实验箱是一款八位,十六位兼容设计的 ...

  5. 计算机组成与系统结构指导,计算机组成与系统结构实验指导书

    计算机组成与系统结构实验指导书 (37页) 本资源提供全文预览,点击全文预览即可全文预览,如果喜欢文档就下载吧,查找使用更方便哦! 19.9 积分 <计算机组成与系统结构>实验指导书内蒙古 ...

  6. 计算机组成与系统结构输入输出控制实验,计算机组成与系统结构实验讲稿.ppt...

    计算机组成与系统结构实验讲稿 <计算机组成与系统结构> 实验一 运算器设计与仿真;一.实验目的理解并掌握运算器的基本电路结构及其设计方法,学会使用Verilog HDL对电路进行行为建模. ...

  7. 计算机组成原理实验单周期处理,计算机组成原理实验实验报告-单周期cpu设计...

    计算机组成原理实验实验报告-单周期cpu设计 (16页) 本资源提供全文预览,点击全文预览即可全文预览,如果喜欢文档就下载吧,查找使用更方便哦! 19.90 积分 计算机组成原理实验计算机组成原理实验 ...

  8. 计算机组成原理与系统结构实验操作

    计算机五大部件: 运算器 控制器 存储 输入设备 输出设备 通过总线连接 下面一行是其归类 CPU(运算器(ALU)和控制器(CU)).存储器(这里指内存和高速缓存).IO设备(外存属于这一部分) C ...

  9. 【中山大学计算机组成原理实验】单周期CPU设计与实现

    实验一 : 单周期CPU设计与实现 一. 实验目的 (1) 掌握单周期CPU数据通路图的构成.原理及其设计方法: (2) 掌握单周期CPU的实现方法,代码实现方法: (3) 认识和掌握指令与CPU的关 ...

最新文章

  1. 何恺明时隔2年再发一作论文:为视觉大模型开路,“CVPR 2022最佳论文候选预定”...
  2. python操作文件open_python:open/文件操作
  3. shopnc 支持 支付宝快捷登陆 shopnc权限验证原理说明
  4. BZOJ 1443: [JSOI2009]游戏Game
  5. 【Classification】分类的进阶
  6. 一二三系列之状压DP——Max Correct Set(一)Neko Rules the Catniverse (Large Version)(二)Make It Ascending(三)
  7. Java web后端1 XML URI与URL HTTP Tomcat
  8. leetcode 加一
  9. poj 3370 Halloween treats
  10. TokenInsight:反映区块链行业整体表现的TI指数较昨日同期下跌1.54%
  11. Apache服务器 403 Forbidden的几种错误原因小结!
  12. (转)kafka 详解
  13. 频谱仪的更改ip_通过局域网(LAN)读取频谱分析仪图像的方法
  14. mmd的ray渲染是怎么回事呢
  15. 如何处理大数据量的查询
  16. 显卡的优化以提高计算机性能作用,显卡优化,教您如何设置NVIDIA(英伟达)显卡玩游戏性能更高...
  17. matlab做混频,基于MATLAB的混频测试
  18. Conda / Anaconda : UnavailableInvalidChannel The channel is not accessible or is invalid.
  19. python小组项目总结报告_给大家汇报一下我们学习小组的进展情况
  20. IBM V7000存储服务器配置

热门文章

  1. CouchDB的简单使用
  2. 【苹果CMS技术教程】苹果CMSV10基础安装过程,如何拥有自己的视频网站
  3. 蚁群算法解决多峰函数优化问题
  4. 组策略2-桌面背景统一策略
  5. react中onClick点击事件
  6. 赛门铁克ssl证书   仲裁证书
  7. 做企业数字化转型的最佳拍档,中软国际的变与不变
  8. R的内存管理和垃圾清理
  9. 一线互联网技术团队管理经验谈
  10. javaScript-如何引入js代码