【上海大学计算机组成原理实验报告】七、程序转移机制
一、实验目的
-
学习实现程序转移的硬件机制。
-
掌握堆栈寄存器的使用。
二、实验原理
-
根据实验指导书的相关内容,实验箱系统的程序转移硬件机制在于,当
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:11PC:11③将
PC改为22H显示
ST:11PC:22④将
PC加到25H显示
ST:11PC: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. 调…...
企业微信 API 实操系列:利用 API 实现跨平台引流数据的自动闭环与 ROI 归因
一、 业务场景:引流路径上的“数据断层” 在 2026 年的私域运营中,企业往往采取多平台联动的策略:在抖音投放短视频、在小红书铺设笔记、在视频号进行直播。最终的目标都是引导用户扫描二维码,沉淀到企业微信。 然而,传…...
如何在macOS上畅玩Windows游戏和应用:Whisky完整实战指南
如何在macOS上畅玩Windows游戏和应用:Whisky完整实战指南 【免费下载链接】Whisky A modern Wine wrapper for macOS built with SwiftUI 项目地址: https://gitcode.com/gh_mirrors/wh/Whisky 还在为Mac电脑无法运行Windows专属软件而烦恼吗?是否…...
Soot印相不是风格,是光学物理过程!20年暗房工程师拆解Midjourney如何模拟FeSO₄还原反应与纸基纤维吸附曲线
更多请点击: https://intelliparadigm.com 第一章:Soot印相不是风格,是光学物理过程! Soot印相(Soot Photogram)是一种基于真实碳黑微粒沉积与光敏材料相互作用的直摄成像技术,其本质并非后期滤…...
ESP32连接ROS保姆级教程:用Arduino IDE搞定WiFi通信(附完整代码)
ESP32连接ROS保姆级教程:用Arduino IDE搞定WiFi通信(附完整代码) 如果你手头有一块ESP32开发板,想快速实现与ROS系统的无线通信,却苦于找不到简单明了的教程,那么这篇文章就是为你准备的。我们将从零开始&a…...
从Windows CFG到Linux Kernel CFI:手把手教你理解现代操作系统的控制流防护
从Windows CFG到Linux Kernel CFI:现代操作系统控制流防护实战指南 在系统安全领域,控制流劫持攻击始终是最具破坏力的威胁之一。想象一下,攻击者能够像操纵木偶一样控制程序的执行流程,绕过所有安全检查直接获取系统权限——这正…...
如何10分钟搞定300张照片的智能水印处理?
如何10分钟搞定300张照片的智能水印处理? 【免费下载链接】semi-utils 一个批量添加相机机型和拍摄参数的工具,后续「可能」添加其他功能。 项目地址: https://gitcode.com/gh_mirrors/se/semi-utils 作为一名摄影爱好者,你是否曾为给…...
通过taotoken的cli工具一键配置团队统一的ai开发环境
🚀 告别海外账号与网络限制!稳定直连全球优质大模型,限时半价接入中。 👉 点击领取海量免费额度 通过Taotoken的CLI工具一键配置团队统一的AI开发环境 基础教程类,面向技术团队负责人或DevOps工程师,目标是…...
Nodejs项目接入Taotoken多模型API的完整步骤
🚀 告别海外账号与网络限制!稳定直连全球优质大模型,限时半价接入中。 👉 点击领取海量免费额度 Nodejs项目接入Taotoken多模型API的完整步骤 1. 准备工作:获取API Key与模型ID 在开始编写代码之前,你需要…...
“同学家住别墅,咱们穷吗?”:最好的家产,是睡个好觉
有一天傍晚,刚把小儿子从学校接回来,这小子书包都没来得及放下,就给我抛出了一个灵魂拷问。“爸,今天听同学说,他们家换了大别墅,上下三层还有专门看电影的房间。”他顿了顿,眼神里带着一种真诚…...
免费二维CAD绘图软件LitCAD完整指南:15分钟快速上手专业设计
免费二维CAD绘图软件LitCAD完整指南:15分钟快速上手专业设计 【免费下载链接】LitCAD A very simple CAD developed by C#. 项目地址: https://gitcode.com/gh_mirrors/li/LitCAD 还在为昂贵的CAD软件费用发愁吗?还在为复杂的设计工具学习曲线感到…...
