【上海大学计算机组成原理实验报告】七、程序转移机制
一、实验目的
-
学习实现程序转移的硬件机制。
-
掌握堆栈寄存器的使用。
二、实验原理
-
根据实验指导书的相关内容,实验箱系统的程序转移硬件机制在于,当
LDPC
有效时,如果此时DUBS
上的值就是转移的目标地址,则此目标地址被打入PC
,从而实现程序的转移;若LDPC
为0
是附带条件的,就形成“条件转移”。实验箱依靠“PC打入电路”实现“有进位”时转移和“计算结果为0
”时转移,以及无条件转移。 -
为了实现返回时转移的目标一定是调用时转移的出发点,在调用转移时必须把出发地址保存起来,保存的位置应具备同时具备“不被一般用户所知或改变”以及“返回转移时能方便地找到它”的特点。
-
本实验箱所使用的子程序调用和返回的结构由
PC
电路和ST
组成。
三、实验内容
实验任务一:手动方式实现子程序调用转移过程
假设调用子程序指令的下一条指令存放在11H
单元,子程序的入口地址为22H
。
(1)实验步骤
-
注释仪器,打开电源,手不要远离电源开关,随时准备关闭电源,注意各数码管、发光管的稳定性,静待10秒,确信仪器稳定、无焦糊味。
-
按
Reset
键初始化系统,并设置实验箱进入手动模式。 -
按照下表对实验箱线路进行连接:
-
将
11H
存入PC
寄存器。用开关K23~K16
,设置数值为11H
,并按下表设置对应信号:
按下STEP
键,将数据送PC
。
-
将
PC
中的数据压入ST
寄存器中。按下表设置对应信号:
设置完毕后按下STEP
键,将数据压入ST
寄存器中。
-
将
22H
存入PC
寄存器。用开关K23~K16
,设置数值为22H
,并按下表设置对应信号:
按下STEP
键,将数据送PC
。
-
将
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)实验步骤
- 保持实验任务一的接线,按下表设置对应信号:
按下STEP
,观察实验箱情况。
(2)实验现象
ST
显示:11
;PC
显示:11
实验任务三:编程实现OUT
寄存器交替显示11
和55
要求交替频率为可以清晰辨识,且不小于每秒一次。(实验箱的频率为114.8Hz)
(1)实验步骤
-
拔下实验箱上的接线,并将开关
K23-K16
全部置0
,开关K15~K0
全部置1
,按下Reset
键初始化系统。 -
打开电脑上的
CP226
软件,点击源程序编写如下代码: -
将文件保存为
.asm
文件,并进行编译和下载。 -
通过单微指令运行文件,观察运行情况并记录实验结果。
(2)实验现象
将程序编译和下载后,发现实验箱上的
OUT
寄存器能正常交替显示11
和55
。
(3)实验结论
-
通过手动方式实现子程序调用转移以及返回转移,验证了
PC
寄存器既可以通过打入初值功能实现程序转移,也可以通过自动加1
功能实现程序顺序执行。 -
通过一系列正确的设计,我们成功地通过
CP226
软件完成了“让OUT
寄存器交替显示11
和55
”的功能。
四、建议
-
在测试程序时,如果发现
OUT
寄存器交替显示的频率过快,应注意L1
循环的设计是否合理。 -
在编写汇编代码时,要注意大小写,当前串行口连接无效时,可切换其他串行口进行实验。
五、体会
通过此次实验,我对程序转移的硬件机制有了更深入的理解。在实验过程中,我最初设计的延时程序段无论怎么调整交替显示的频率还是很快,经仔细分析汇编代码才发现原来自己虽然写了循环递减,但实际上程序运行的时候只减了一次就跳出了循环,这提醒我在后续进行实验时要考虑地更加深入一些。
六、思考题
若要求11
和55
各显示50
次后停机,应该如何修改程序?
答:要实现该功能,应在一个寄存器X
中存入100
,每当11
和55
通过OUT
输出一次,就将X
减1
,当X
为0
时,即表示11
和55
已经各显示50
次,再进行停机操作。
相关文章:
【上海大学计算机组成原理实验报告】七、程序转移机制
一、实验目的 学习实现程序转移的硬件机制。 掌握堆栈寄存器的使用。 二、实验原理 根据实验指导书的相关内容,实验箱系统的程序转移硬件机制在于,当LDPC有效时,如果此时DUBS上的值就是转移的目标地址,则此目标地址被打入PC&am…...
LLVM Cpu0 新后端7 第一部分 DAG调试 dot文件 Machine Pass
想好好熟悉一下llvm开发一个新后端都要干什么,于是参考了老师的系列文章: LLVM 后端实践笔记 代码在这里(还没来得及准备,先用网盘暂存一下): 链接: https://pan.baidu.com/s/1yLAtXs9XwtyEzYSlDCSlqw?…...
修复www服务trace漏洞
验证方式:curl -v -X TRACE ip:port,或使用其他接口调试工具如Postman 响应:状态行405 Method Not Allowed且响应体无内容 方案一:使用过滤器 若webserver是tomcat, 添加过滤器的方式有很多 Component public class TraceHttpMe…...
算法:101. 对称二叉树
对称二叉树 给你一个二叉树的根节点 root , 检查它是否轴对称。 示例 1: 输入:root [1,2,2,3,4,4,3] 输出:true示例 2: 输入:root [1,2,2,null,3,null,3] 输出:false提示: 树中节…...
wordpress 使用api发布文章
1.安装插件 在/wp-content/plugins/目录执行以下命令 $ sudo git clone https://github.com/WP-API/Basic-Auth.git 2.Python脚本 import requestsurl http://www.ziyuanwang.online/wp-json/wp/v2/postsuser adminpassword xxxxxheaders {Content-Type: application/j…...
《Brave New Words 》2.2 阅读理解的未来,让文字生动起来!
Part II: Giving Voice to the Social Sciences 第二部分:为社会科学发声 The Future of Reading Comprehension, Where Literature Comes Alive! 阅读理解的未来,让文字生动起来! Saanvi, a ninth grader in India who attends Khan World S…...
基于Java的超市进销存管理系统
开头语: 你好呀,我是计算机学长猫哥!如果有相关需求,文末可以找到我的联系方式。 开发语言: Java 数据库: MySQL 技术: Java JSP Servlet JavaBean 工具: IDEA/Eclipse、…...
Oracle 日志挖掘
oracle 11g 日志挖掘测试 需要开启补充日志 alter database add supplemental log data; SELECT SUPPLEMENTAL_LOG_DATA_MIN, SUPPLEMENTAL_LOG_DATA_PK, SUPPLEMENTAL_LOG_DATA_UI FROM V$DATABASE;在用户下执行一些删除,插入等操作 SQL> create table zxy( …...
翻转二叉树-力扣
翻转二叉树,通过前序遍历的顺序,从根节点开始,将节点的左右子节点一次进行交换即可。 /*** Definition for a binary tree node.* struct TreeNode {* int val;* TreeNode *left;* TreeNode *right;* TreeNode() : val(0), …...
办公风云颜值背后的职场正能量
办公风云:颜值背后的职场正能量当我们提到职场,脑海中浮现的往往是严肃的面孔、忙碌的身影和堆积如山的文件。但在这个看似单调的舞台上,总有一些人,用他们的颜值和才华,为我们上演了一场场别开生面的“大戏”。今天&a…...
ffmpeg将一个视频中的音频合并到另一个视频
ffmpeg -i input1.mp4 -i input2.mp4 -map 1:v -map 0:a -c:v copy -c:a aac -strict experimental output.mp4解释如下: -i input1.mp4:指定第一个输入文件input1.mp4,这是你要提取音频的文件。-i input2.mp4:指定第二个输入文件…...
Web前端管理系统项目:深度解析与实现之道
Web前端管理系统项目:深度解析与实现之道 在当今数字化时代,Web前端管理系统项目已成为企业信息化建设的核心组成部分。这类项目不仅涉及技术的深度和广度,更考验开发者的综合素质和创新能力。本文将从四个方面、五个方面、六个方面和七个方…...
C语言最终讲:预处理详解
C语言最终讲:预处理详解 1.预定义符号2.#define定义常量3.#define定义宏4.带有副作用的宏参数5.宏替换的规则6.宏和函数的对比6.1宏的优势6.1.1\符号 6.2宏的劣势 7.#和##7.1#运算符7.2##运算符 8.命名约定9.#undef10.命令行定义11.条件编译12.头文件的包含12.1本地…...
Mysql的底层实现逻辑
Mysql5.x和Mysql8性能的差异 整体性能有所提高, 在非高并发场景下,他们2这使用区别不大,性能没有明显的区别。 只有高并发时,mysql8才体现他的优势。 2. Mysql数据存储结构Innodb逻辑结构 数据选用B树结构存储数据࿰…...
Node安装配置
一、下载 Node官网下载地址:https://nodejs.org/en/ 二、安装 双击上面的msi扩展安装包开始安装,基本一路Next就行了 推荐安装目录自定义,最好不要放在C盘 检查安装是否成功 Win R 快捷键,输入 cmd 打开命令窗口输…...
Django里的ModelForm组件
ModelForm组件 自动生成HTML标签 自动读取关联数据表单验证 保留之前提交的数据 错误提示数据库进行:新建,修改 步骤如下: 创建类 # 在 views.py 文件里# 创建一个类 class AssetModelForm(forms.ModelForm):class Meta:model models.…...
深入理解C语言:main函数的奥秘
在C语言中,main函数是每个程序的入口点,起着至关重要的作用。本文将深入探讨main函数的工作原理,包括其参数、返回值、以及如何从main启动程序的执行。通过实际代码示例,读者将更深入地理解main函数在C语言编程中的核心地位。 第一…...
selenium自动化测试入门 —— Alert/Confirm/Prompt 弹出窗口处理!
一、Alert/Confirm/Prompt弹出窗口特征说明 Alert弹出窗口: 提示用户信息只有确认按钮,无法通过页面元素定位,不关闭窗口无法在页面上做其他操作。 Confirm 弹出窗口: 有确认和取消按钮,该弹出窗口无法用页面元素定…...
探索JavaScript 18:新特性全解析
JavaScript,作为全球最广泛使用的编程语言之一,每年的更新都备受开发者社区的关注。2023年,JavaScript的新版标准——ECMAScript 2023(也称为JavaScript 18)引入了多项激动人心的新特性,这些特性不仅优化了…...
Python第二语言(七、Python模块)
目录 1. 什么是模块 2. 基本语法 2.1 模块的导入方式 2.2 基本语法 import 模块名 2.3 基本语法 from 模块名 import 功能名 2.4 基本语法as 别名 3. 自定义模块 4. 调用自定义模块时,如何让其模块中的函数不被调用(__name__) 5. 调…...
介绍单例模式
描述 保证一个类只有一个实例,并且提供一个全局访问点 场景: 重量级的对象,不需要多个实例,如线程池,数据库连接池 实现 1. 懒汉模式 延迟加载的方式 只有在真正使用的时候,才开始实例化线程安全问题…...
【C++修行之道】类和对象(五)日期类的实现、const成员、取地址及const和取地址操作符重载
目录 一、 日期类的实现 Date.h 1.1 GetMonthDay函数(获取某年某月的天数) 问:这个函数为什么不和其他的函数一样放在Date.cpp文件中实现呢? 1.2 CheckDate函数(检查日期有效性)、Print函数(…...
来腾讯第4天,我已经焦虑昏了啊!
大家好,我是白露啊。 今天在看到一个实习生在抱怨,给我笑惨了。 标题是:“腾讯实习第4天,焦虑昏了”! 他写道:“怎么办啊牛爷爷们,什么都不会。业务看不懂,文档看不懂,…...
MacOS升级ruby版本
MacOS自带ruby版本是2.x,可以通过“ruby -v”查看版本号 $ ruby -v ruby 2.6.10p210 (2022-04-12 revision 67958) [universal.x86_64-darwin22]homebrew安装的ruby版本号可以通过“brew info ruby”命令参看 $ brew info ruby > ruby: stable 3.3.2 (bottled)…...
【MySQL数据库基础】
🌈个人主页:努力学编程’ ⛅个人推荐:基于java提供的ArrayList实现的扑克牌游戏 |C贪吃蛇详解 ⚡学好数据结构,刷题刻不容缓:点击一起刷题 🌙心灵鸡汤:总有人要赢,为什么不能是我呢 …...
QT系列教程(9) 主窗口学习
简介 任何界面应用都有一个主窗口,今天我们谈谈主窗口相关知识。一个主窗口包括菜单栏,工具栏,状态栏,以及中心区域等部分。我们先从菜单栏说起 菜单栏 我们创建一个主窗口应用程序, 在ui文件里的菜单栏里有“在这里输入”的一个…...
【C++进阶】深入STL之 栈与队列:数据结构探索之旅
📝个人主页🌹:Eternity._ ⏩收录专栏⏪:C “ 登神长阶 ” 🤡往期回顾🤡:模拟实现list与迭代器 🌹🌹期待您的关注 🌹🌹 ❀stack和queue Ǵ…...
SpringBoot发邮件服务如何配置?怎么使用?
SpringBoot发邮件需要的参数?邮件发送性能如何优化? 在SpringBoot项目中配置发邮件服务是一个常见的需求,它允许我们通过应用程序发送通知、验证邮件或其他类型的邮件。AokSend将详细介绍如何在SpringBoot中配置发邮件服务。 SpringBoot发邮…...
AutoCAD Mechanical机械版专业的计算机辅助设计软件安装包下载安装!
AutoCAD机械版作为一款专业的计算机辅助设计软件,不仅具备卓越的二维绘图功能,更是拥有令人瞩目的3D建模工具,为机械设计师们提供了前所未有的创作空间。 在AutoCAD机械版的3D建模环境中,用户可以借助一系列简洁明了的命令&#…...
json.load报错AttributeError: ‘str‘ object has no attribute ‘load‘
with open(json_file, r) as f:data json.load(f)要写个简单的数据处理脚本,报错AttributeError: ‘str’ object has no attribute ‘load’,查看了一下,路径正确,查了半天博客,不知道错在哪里。 回头一看 jsons_pa…...
政务公开与网站建设的矛盾/品牌推广的方式
现在的人抄袭成风啊,都不带大脑思考的。 跑马灯的效果,我看到好多文章就想笑。很多文章都有一句,文字不能比TextView长。我了个去,有点脑子的都知道,文字没有TextView长的话还需要跑马吗?全显示出来了还需…...
动漫美女做爰视频网站/百度seo关键词排名
转载自:Java排序算法...
泉州建设网站开发/靠谱seo外包定制
可以设置收、发邮件白名单,当终端用户使用天锐绿盾终端自带的邮件工具、outlook、foxmail 或闪电邮往白名单邮箱地址收、发送邮件时,加密的附件就会自动解密,减少解密申请次数,方便用户使用。工具:绿盾加密软件收件人白…...
旅游景点网站建设设计说明/蚂蚁bt
暖气来了,嗓子眼儿冒火、口腔溃疡、大便干燥,该怎么办呢?解放军309医院营养科主任医师张晔开出四字饮食处方:降、清、润、补。 降火汤——冬瓜配紫菜 很多家庭最爱做西红柿黄瓜片汤,其实冬季最好的汤是冬瓜汤ÿ…...
新乡手机网站建设哪家专业/google搜索引擎下载
也许没有相当于RDB的条件只存在于条件中.我怎样才能实现不存在或者存在等效于不存在?解决方法:这里是一个PHP实现public function getRecordsByInExpression($tableName, $providerCode, $fieldName, $values, $logicalOp self::IN_EXP){$queryExp [TableName >…...
wordpress产品详情页按钮/百度问一问人工客服怎么联系
设立一个简单的定时器 setTimeout(function(){console.log("哈哈哈") },1000);每个2分钟调用一次接口 setInterval(alertLogin(),1200000)setTimeout 和 setInterval的区别就是前者执行一次 后者定时执行一次...