博客
关于我
山东大学软件学院计算机组成原理课程设计整机实验(2)
阅读量:733 次
发布时间:2019-03-21

本文共 1233 字,大约阅读时间需要 4 分钟。

文章目录

  • 实验时间
  • 实验任务
  • 对JO指令要求的理解
  • JO指令的实现方法
  • 实验中遇到的其他问题5.1 机器吞咽微指令的问题
  • 一、实验时间2021年5月6日星期四,第10周

    2021年5月14日星期四,第11周

    二、实验任务完成计组整机实验的拓展功能1:JO指令的实现

    (图片描述:关于JO指令的实现步骤图)

    三、对JO指令要求的理解

    开始时,我对拓展功能1的理解存在误区。我原本认为A4地址是通过相对寻址方式加法得来的,随后写入FF。但是真实情况是A4地址是固定的,不会通过相对寻址得到。
    后来向老师求教后,我得知以下正确理解:

  • 加法执行结束后,四个状态位将打入PSW寄存器,并显示在控制台的灯上
  • 如果加法不溢出,则顺序执行,不往A4地址中写数据(A4保持初始值)
  • 如果加法溢出,则根据相对偏移量跳转到STORE指令,并向A4地址中写FF
  • JO指令的第一个字长为操作码+0000,第二个字长为相对寻址的偏移量。老师要求我们根据偏移量寻找的是STORE FF A4指令,而不是操作数。

    STORE FF A4的地址通过相对寻址找到,即STORE的地址=当前PC值+偏移量

    注意:如果不溢出,内存不会改变,不能误认为不溢出要写00,溢出要写FF

    四、JO指令的实现方法

    关于JO指令的实现,有两种理解:

  • 我采用的方法是利用三条指令:
    • CMP指令:用于判断是否溢出,如果不溢出则顺序执行,如果溢出则跳转到JO指令
    • JO指令:当溢出时执行,取出JO第二字长的相对偏移量后,通过ALU作加法,将PC置为STORE指令的RAM地址
    • STORE FF A4指令:将FF存入A4,然后重置PC,跳转至乘法指令
  • 实现JO指令的关键在于条件判断:如何有溢出就跳转,不溢出就顺序执行。我的实现方法是:

    • 如果溢出,将PC置为跳转指令的RAM地址
    • 如果不溢出,则PC+1
    • 通过LOADPC微指令和溢出位V共同决定LD脚的输出
    • 只有LOADPC=1且V=1时,LD脚输出为0,此时PC置数模式
    • 其他情况下,PC+1模式

    另一种理解:

    • JO指令:用于判断溢出,如果溢出则根据相对寻址找到STORE指令并跳转
    • STORE FF A4:将FF存入A4地址中

    我认为这两种方法都可以,第二种实现更为简单。

    关于STORE FF A4指令:

    这是我自己设计的指令格式:

    • 第一字长:OP+低四位
    • 第二字长:A4
    • 第三字长:FF
    • 第四字长:执行后跳转的RAM地址

    五、实验中遇到的其他问题

    5.1 机器吞咽微指令的问题
    在初期微指令较少时,连续脉冲执行正常。但当加入乘法指令和JO后,单脉冲测试无异常,连续脉冲却会在乘法指令执行到一半时显示微指令全0,随后跳转至微指令取指阶段。
    后来向老师求教,老师称可能是机器老化或负载过大导致的。改用以下启动电路后,问题得到解决:

    (图片描述:改装后的二分频启动电路)

    这个问题并非 everyone 会遇到。如果你在单脉冲正常但连续脉冲出现问题时,可以考虑更换启动电路。

    转载地址:http://vpagz.baihongyu.com/

    你可能感兴趣的文章
    mysql 多字段删除重复数据,保留最小id数据
    查看>>
    MySQL 多表联合查询:UNION 和 JOIN 分析
    查看>>
    MySQL 大数据量快速插入方法和语句优化
    查看>>
    mysql 如何给SQL添加索引
    查看>>
    mysql 字段区分大小写
    查看>>
    mysql 字段合并问题(group_concat)
    查看>>
    mysql 字段类型类型
    查看>>
    MySQL 字符串截取函数,字段截取,字符串截取
    查看>>
    MySQL 存储引擎
    查看>>
    mysql 存储过程 注入_mysql 视图 事务 存储过程 SQL注入
    查看>>
    MySQL 存储过程参数:in、out、inout
    查看>>
    mysql 存储过程每隔一段时间执行一次
    查看>>
    mysql 存在update不存在insert
    查看>>
    Mysql 学习总结(86)—— Mysql 的 JSON 数据类型正确使用姿势
    查看>>
    Mysql 学习总结(87)—— Mysql 执行计划(Explain)再总结
    查看>>
    Mysql 学习总结(88)—— Mysql 官方为什么不推荐用雪花 id 和 uuid 做 MySQL 主键
    查看>>
    Mysql 学习总结(89)—— Mysql 库表容量统计
    查看>>
    mysql 实现主从复制/主从同步
    查看>>
    mysql 审核_审核MySQL数据库上的登录
    查看>>
    mysql 导入 sql 文件时 ERROR 1046 (3D000) no database selected 错误的解决
    查看>>