【上海大学计算机组成原理实验报告】七、程序转移机制

一、实验目的

  1. 学习实现程序转移的硬件机制。

  2. 掌握堆栈寄存器的使用。

二、实验原理

  1. 根据实验指导书的相关内容,实验箱系统的程序转移硬件机制在于,当LDPC有效时,如果此时DUBS上的值就是转移的目标地址,则此目标地址被打入PC,从而实现程序的转移;若LDPC0是附带条件的,就形成"条件转移"。实验箱依靠"PC打入电路"实现"有进位"时转移和"计算结果为0"时转移,以及无条件转移。

  2. 为了实现返回时转移的目标一定是调用时转移的出发点,在调用转移时必须把出发地址保存起来,保存的位置应具备同时具备"不被一般用户所知或改变"以及"返回转移时能方便地找到它"的特点。

  3. 本实验箱所使用的子程序调用和返回的结构由PC电路和ST组成。

三、实验内容

实验任务一:手动方式实现子程序调用转移过程

假设调用子程序指令的下一条指令存放在11H单元,子程序的入口地址为22H

(1)实验步骤

  1. 注释仪器,打开电源,手不要远离电源开关,随时准备关闭电源,注意各数码管、发光管的稳定性,静待10秒,确信仪器稳定、无焦糊味。

  2. Reset键初始化系统,并设置实验箱进入手动模式。

  3. 按照下表对实验箱线路进行连接:

  4. 11H存入PC寄存器。用开关K23~K16,设置数值为11H,并按下表设置对应信号:

按下STEP键,将数据送PC

  1. PC中的数据压入ST寄存器中。按下表设置对应信号:

设置完毕后按下STEP键,将数据压入ST寄存器中。

  1. 22H存入PC寄存器。用开关K23~K16,设置数值为22H,并按下表设置对应信号:

按下STEP键,将数据送PC

  1. PC加到25H。按下表设置对应信号:

STEP键,观察PC寄存器变化。

(2)实验现象

①将PC(11H)存入 ST( 栈寄存器 )

显示ST:00 PC:11`

②将PC压入堆栈ST

显示 ST:11 PC:11

③将PC改为22H

显示ST:11 PC:22

④将PC加到25H

显示ST:11 PC:25H

实验任务二:手动方式实现子程序返回转移过程

(1)实验步骤

  1. 保持实验任务一的接线,按下表设置对应信号:

按下STEP,观察实验箱情况。

(2)实验现象

ST显示:11PC显示:11

实验任务三:编程实现OUT寄存器交替显示1155

要求交替频率为可以清晰辨识,且不小于每秒一次。(实验箱的频率为114.8Hz)

(1)实验步骤

  1. 拔下实验箱上的接线,并将开关K23-K16全部置0,开关K15~K0全部置1,按下Reset键初始化系统。

  2. 打开电脑上的CP226软件,点击源程序编写如下代码:

  3. 将文件保存为.asm文件,并进行编译和下载。

  4. 通过单微指令运行文件,观察运行情况并记录实验结果。

(2)实验现象

将程序编译和下载后,发现实验箱上的OUT寄存器能正常交替显示1155

(3)实验结论

  1. 通过手动方式实现子程序调用转移以及返回转移,验证了PC寄存器既可以通过打入初值功能实现程序转移,也可以通过自动加1功能实现程序顺序执行。

  2. 通过一系列正确的设计,我们成功地通过CP226软件完成了"让OUT寄存器交替显示1155"的功能。

四、建议

  1. 在测试程序时,如果发现OUT寄存器交替显示的频率过快,应注意L1循环的设计是否合理。

  2. 在编写汇编代码时,要注意大小写,当前串行口连接无效时,可切换其他串行口进行实验。

五、体会

通过此次实验,我对程序转移的硬件机制有了更深入的理解。在实验过程中,我最初设计的延时程序段无论怎么调整交替显示的频率还是很快,经仔细分析汇编代码才发现原来自己虽然写了循环递减,但实际上程序运行的时候只减了一次就跳出了循环,这提醒我在后续进行实验时要考虑地更加深入一些。

六、思考题

若要求1155各显示50次后停机,应该如何修改程序?

答:要实现该功能,应在一个寄存器X中存入100,每当1155通过OUT输出一次,就将X1,当X0时,即表示1155已经各显示50次,再进行停机操作。

相关推荐
Yunni_root5 天前
Ubuntu终端跑colmap实验记录——生成sparse和poses_bounds.npy
经验分享·ubuntu·计算机视觉·nerf·colmap·实验·bad-nerf
小新_-9 天前
第五章:指令系统
计算机组成原理
安迁岚17 天前
【SQL Server】华中农业大学空间数据库实验报告 实验二 数据库表
数据库·sql·mysql·oracle·实验报告
啊呦.超能力1 个月前
计算机硬件的工作原理
计算机组成原理
Tassel_YUE2 个月前
vSAN01:vSAN简介、安装、磁盘组、内部架构与调用关系
架构·vmware·虚拟化·vsan·实验
旅僧2 个月前
多处理器基本概念(SISD、SIMD、MISD、MIMD)--自用
计算机组成原理
dulu~dulu2 个月前
数据冒险与控制冒险
java·开发语言·计算机组成原理
dulu~dulu2 个月前
I/O中断处理过程
单片机·嵌入式硬件·计算机组成原理
小新_-2 个月前
第四章:存储系统:第一节——存储器概述
计算机组成原理
Fuliy962 个月前
【计算机组成原理】实验一:运算器输入锁存器数据写实验
计算机组成原理·锁存器·实验报告·clk·运算器输入锁存器数据写实验·74hc574芯片