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

一、实验目的

  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次,再进行停机操作。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:/a/696548.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

【数据分析基础】实验三 文件操作、数组与矩阵运算

一.实验目的 掌握上下文管理语句with的使用方法。掌握文本文件的操作方法。了解os、os.path模块的使用。掌握扩展库Python-docx、openpyxl的安装与操作word、Excel文件内容的方法。熟练掌握numpy数组相关运算和简单应用。熟练使用numpy创建矩阵,熟悉常用…

Python | Leetcode Python题解之第135题分发糖果

题目: 题解: class Solution:def candy(self, ratings: List[int]) -> int:n len(ratings)ret 1inc, dec, pre 1, 0, 1for i in range(1, n):if ratings[i] > ratings[i - 1]:dec 0pre (1 if ratings[i] ratings[i - 1] else pre 1)ret p…

27-LINUX--I/O复用-poll

一.poll概述 poll是一个多路复用的I/O模型&#xff0c;一个进程监视多个文件描述符&#xff0c;当文件描述符就绪时&#xff0c;poll返回可读并做相应处理。 1.poll的模型 #include <poll.h>struct pollfd {int fd; //文件描述符short events; //事件类型 s…

codesys【CAN总线】

1下载设备描述文件&#xff1a; 必须下载设备描述文件&#xff0c;要不然编程软件无法正确组态。 根据实际设备【品牌】去官网搜索下载。 以 DMA882-CAN 为例 CAN的设备描述文件是【.eds】的扩展名 安装设备描述文件。 2添加CAN总线&#xff1a; 1添加【CAN总线】&#xff1a…

Chroium 源码目录结构分析(1):源码目录体积一栏

获取源码 首先&#xff0c;我们拉一份最新的源代码&#xff08;笔者是2024.6.6日拉取的&#xff09;&#xff1a; fetch --nohistory chromium 源码预处理 如果运行build&#xff0c;会生成许多生成的代码&#xff0c;因此我们不运行build。 然后&#xff0c;把干扰后续分析…

Map深度学习

Map Map是一个键值对的集合&#xff0c;和object类似&#xff0c;Map作为构造函数&#xff0c;可以通过全局对象获取到。需要通过new操作创建实例对象&#xff0c;直接调用会报错。Map构造函数接受一个iterable类型的函数&#xff0c;用来初始化Map。 var m new Map([[1, &qu…

centos7安装字体

1.安装命令 yum install fontconfig #字体库命令 yum install mkfontscale #更新字体命令2.安装字体&#xff08;注意权限问题&#xff09; 进入目录 /usr/share/fonts &#xff0c;该目录是 centos7 字体库的默认安装目录。在该目录下创建一个文件夹 ekp &#xff08;名字…

理解我的积木编程思想

1 学习教程&#xff0c;至少7139手册2 编程实践&#xff0c;遇到实际问题后&#xff0c;在技术资料中查找关键词3 选择适合的条目找到代 码。修正&#xff0c;组合。

封装了一个简单理解的iOS竖直文字轮播

效果图 原理 就是持有两个视图&#xff0c;并且两个视图同时改变origin.y 动画结束之后&#xff0c;判断哪个视图是在上面并且看不到的&#xff0c; 则将该视图移动到底部&#xff0c;并且该视图展示下一跳内容 在开始下一轮动画 代码 - (void)startAnimationWithDuration:(…

若依项目部署(Linux2.0)

解压jdk tar -zxvf jdk-8u151-linux-x64.tar.gz 配置Java环境变量&#xff1a; vim /etc/profile export JAVA_HOME/root/soft/jdk1.8.0_151 export JRE_HOME${JAVA_HOME}/jre export CLASSPATH.:${JAVA_HOME}/lib:${JRE_HOME}/lib export PATH${JAVA_HOME}/bin:$PATH 设置环境…

WordPress 高级缓存插件 W3 Total Cache Pro 详细配置教程

说起来有关 WordPress 缓存插件明月已经发表过不少文章了,但有关 W3 Total Cache Pro 这个 WordPress 高级缓存插件除了早期【网站缓存插件 W3 Total Cache,适合自己的才是最好的!】一文后就很少再提及了,最近因为明月另一个网站【玉满斋】因为某些性能上的需要准备更换缓存…

MySQL基础---库的操作和表的操作(配着自己的实操图,简单易上手)

绪论​ 勿问成功的秘诀为何&#xff0c;且尽全力做您应该做的事吧。–美华纳&#xff1b;本章是MySQL的第二章&#xff0c;本章主要写道MySQL中库和表的增删查改以及对库和表的备份处理&#xff0c;本章是基于上一章所写若没安装mysql可以查看Linux下搭建mysql软件及登录和基本…

解密Spring Boot:深入理解条件装配与条件注解

文章目录 一、条件装配概述1.1 条件装配的基本原理1.2 条件装配的作用 二、常用注解2.1 ConditionalOnClass2.2 ConditionalOnBean2.3 ConditionalOnProperty2.4 ConditionalOnExpression2.5 ConditionalOnMissingBean 三、条件装配的实现原理四、实际案例 一、条件装配概述 1…

办公风云颜值背后的职场正能量

办公风云&#xff1a;颜值背后的职场正能量当我们提到职场&#xff0c;脑海中浮现的往往是严肃的面孔、忙碌的身影和堆积如山的文件。但在这个看似单调的舞台上&#xff0c;总有一些人&#xff0c;用他们的颜值和才华&#xff0c;为我们上演了一场场别开生面的“大戏”。今天&a…

68. UE5 RPG 处理多个角色后续bug

我们现在已经有了四个敌人角色&#xff0c;接下来&#xff0c;处理一下在战斗中遇到的问题。 处理角色死亡后还会攻击的问题 因为我们有角色溶解的效果&#xff0c;角色在死亡以后的5秒钟才会被销毁掉。所以在这五秒钟之内&#xff0c;角色其实还是会攻击。主要时因为AI行为树…

Gh-ost让MySQL在线表结构变更不再是难题

Gh-ost&#xff1a;无缝迁移&#xff0c;效率与安全并行- 精选真开源&#xff0c;释放新价值。 概览 gh-ost是由GitHub团队精心打造的在线MySQL表结构迁移工具&#xff0c;它以一种无需触发器的方式&#xff0c;实现了对数据库表结构变更的在线操作。gh-ost的设计初衷是解决现…

NetSuite精益实施 之 系统切换作业标准化

这个题目为近日所思&#xff0c;一直没有落笔。今天是端午假日&#xff0c;得空卸货。 标准化是精益实施的三个基础之一&#xff0c;在我们的项目实践中没有须臾忘记。在此我们不再赘述标准化为啥这么重要&#xff0c;更多来分享如何标准化。 在项目实施的各阶段中&#xff0…

汇编语言作业(六)

目录 一、实验目的 二、实验内容 三、实验步骤以及结果 四、实验结果与分析 五、实验总结 一、实验目的 掌握加减法运算指令对各状态标志位的影响及测试方法掌握汇编语言长整数的加法的操作方法 二、实验内容 对于以下几组数&#xff0c; 087H和034H 0C2H和5FH 0F3H和0F3H&am…

数据中心智能化运维发展研究报告(2023)解读

数据中心智能化运维发展研究报告&#xff08;2023&#xff09;解读 《数据中心智能化运维发展研究报告&#xff08;2023&#xff09;》探讨了数据中心智能化运维的概念、核心内容、实际应用和发展建议。报告指出&#xff0c;通过人工智能、大数据等新一代信息技术的深度应用&a…

代码随想录 -数组

1.二分算法 边界开闭 左闭右闭 原则 这里的&#xff0c;middle不是要找的值。那么nums【middle】>tager 我们要更新右边界为middle-1 &#xff08;因为要左区间 所以更新右边界&#xff09; 在这里插入图片描述 class Solution { public:int search(vector<int>&a…