• 计组实践实验9——使用CMStudio设计基于分段模型机微程序指令(2)


    一、 实验目的

    1. 掌握分段模型机指令的设计

    二、 实验设备

    1. 硬件:无
    2. 软件:CMSstudio
      三、 实验内容
    3. 掌握分段模型机指令的设计
      四、 实验原理
    4. 程序与数据在同⼀地址空间 • AR作为地址指针来取指 • 增加PC送AR微操作
    5. • 程序与数据分开存储,程序段和数据段,还有堆栈段等 • 取指:PC • 取操作码和操作数 • 数据存取:AR
    6. • 栈指针:SP • 栈数据 – 存放在数据段 • 栈数据存取: – SP送AR – 通过AR来实现
    7. • INL DR • OUTL SR • STA [ADDR], SR • LD DR, [ADDR] • JMP ADDR

    五、 实验步骤

    1. • 针对下列指令
      – INL DR
      – OUTH SR
      – STA [ADDR], SR
      – LD DR, [ADDR]
      – JMP ADDR

    2. • 写出机器指令格式 • 画出微指令流程图

    3. • 使⽤上述指令系统编写程序,实现
      – INPUT读⼊数据保存到ADDR,
      – 将ADDR内容在OUTPUT显⽰。
      – 循环往复 – 注意:INPUT读⼊到内存和内存输出到OUTPUT所使⽤的寄存器要求不是同⼀个
      六、 调试过程、结果和分析

    4. • 针对下列指令
      – INL DR
      – OUTH SR
      – STA [ADDR], SR
      – LD DR, [ADDR]
      – JMP ADDR

    5. • 写出机器指令格式
      根据实验8 我们不难设定以下格式

    在这里插入图片描述
    在这里插入图片描述
    在这里插入图片描述
    鄙人自行设计的指令图
    在这里插入图片描述

    源程序

    在这里插入图片描述
    没加data segment
    assume ds:data

    表示这是个分段的(同时用ROM和RAM)

    指令系统

    在这里插入图片描述
    指令码和长度的设计详细看我实验8文章

    微程序设计

    这里别忘了
    RD – 奇
    RS – 偶

    比如当源是Register,而目标是IOL的时候,我们这个时候如果设定指令码是21
    先把21转换成16进制
    0100 0001

    0100转换成1101000000(对应的散转地址640,所以2开头对应就是640,0开头对应600)
    如果我们使用偶传偶(这里第二个偶指INPUT/OUTPUT的低位—也就是IOL)那么第一个偶对应RD部分(也就是01,也就是R1寄存器)
    如果使用奇传偶,那么对应的奇使用的是RS部分(也就是00,也就是R0寄存器)

    开头
    在这里插入图片描述

    640
    在这里插入图片描述

    680
    在这里插入图片描述

    6C0
    在这里插入图片描述
    700
    在这里插入图片描述

    740
    在这里插入图片描述

    实验过程中我们可以发现这次变化的是程序区
    在这里插入图片描述
    数据区也被我们装进数据
    在这里插入图片描述
    最后根据实验要求对剩余寄存器进行填充
    在这里插入图片描述

  • 相关阅读:
    .NET周报 【7月第1期 2023-07-02】
    数组07-滑动窗口、HashMap
    Python从入门到入土-基本技能
    神经网络解决优化问题,神经网络 样本不平衡
    拓扑排序小结
    MySQL复合查询
    Java网络编程——基本网络支持
    智牛股_第3章_交易平台_ gRPC+Seata Server分布式事务
    OCX 添加方法和事件 HTML调用ocx函数及回调 ocx又调用dll VS2017
    保存save_data()数组有[]的解决办法
  • 原文地址:https://blog.csdn.net/JamSlade/article/details/125467512