【上海大学计算机组成原理实验报告】七、程序转移机制
一、实验目的
-
学习实现程序转移的硬件机制。
-
掌握堆栈寄存器的使用。
二、实验原理
-
根据实验指导书的相关内容,实验箱系统的程序转移硬件机制在于,当
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. 调…...
装饰模式(Decorator Pattern)重构java邮件发奖系统实战
前言 现在我们有个如下的需求,设计一个邮件发奖的小系统, 需求 1.数据验证 → 2. 敏感信息加密 → 3. 日志记录 → 4. 实际发送邮件 装饰器模式(Decorator Pattern)允许向一个现有的对象添加新的功能,同时又不改变其…...
MySQL 隔离级别:脏读、幻读及不可重复读的原理与示例
一、MySQL 隔离级别 MySQL 提供了四种隔离级别,用于控制事务之间的并发访问以及数据的可见性,不同隔离级别对脏读、幻读、不可重复读这几种并发数据问题有着不同的处理方式,具体如下: 隔离级别脏读不可重复读幻读性能特点及锁机制读未提交(READ UNCOMMITTED)允许出现允许…...
基于数字孪生的水厂可视化平台建设:架构与实践
分享大纲: 1、数字孪生水厂可视化平台建设背景 2、数字孪生水厂可视化平台建设架构 3、数字孪生水厂可视化平台建设成效 近几年,数字孪生水厂的建设开展的如火如荼。作为提升水厂管理效率、优化资源的调度手段,基于数字孪生的水厂可视化平台的…...
【git】把本地更改提交远程新分支feature_g
创建并切换新分支 git checkout -b feature_g 添加并提交更改 git add . git commit -m “实现图片上传功能” 推送到远程 git push -u origin feature_g...
k8s业务程序联调工具-KtConnect
概述 原理 工具作用是建立了一个从本地到集群的单向VPN,根据VPN原理,打通两个内网必然需要借助一个公共中继节点,ktconnect工具巧妙的利用k8s原生的portforward能力,简化了建立连接的过程,apiserver间接起到了中继节…...
深入解析C++中的extern关键字:跨文件共享变量与函数的终极指南
🚀 C extern 关键字深度解析:跨文件编程的终极指南 📅 更新时间:2025年6月5日 🏷️ 标签:C | extern关键字 | 多文件编程 | 链接与声明 | 现代C 文章目录 前言🔥一、extern 是什么?&…...
九天毕昇深度学习平台 | 如何安装库?
pip install 库名 -i https://pypi.tuna.tsinghua.edu.cn/simple --user 举个例子: 报错 ModuleNotFoundError: No module named torch 那么我需要安装 torch pip install torch -i https://pypi.tuna.tsinghua.edu.cn/simple --user pip install 库名&#x…...
uniapp 开发ios, xcode 提交app store connect 和 testflight内测
uniapp 中配置 配置manifest 文档:manifest.json 应用配置 | uni-app官网 hbuilderx中本地打包 下载IOS最新SDK 开发环境 | uni小程序SDK hbulderx 版本号:4.66 对应的sdk版本 4.66 两者必须一致 本地打包的资源导入到SDK 导入资源 | uni小程序SDK …...
【Veristand】Veristand环境安装教程-Linux RT / Windows
首先声明,此教程是针对Simulink编译模型并导入Veristand中编写的,同时需要注意的是老用户编译可能用的是Veristand Model Framework,那个是历史版本,且NI不会再维护,新版本编译支持为VeriStand Model Generation Suppo…...
电脑桌面太单调,用Python写一个桌面小宠物应用。
下面是一个使用Python创建的简单桌面小宠物应用。这个小宠物会在桌面上游荡,可以响应鼠标点击,并且有简单的动画效果。 import tkinter as tk import random import time from PIL import Image, ImageTk import os import sysclass DesktopPet:def __i…...
