当前位置: 首页 > news >正文

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

一、实验目的

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

相关文章:

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

一、实验目的 学习实现程序转移的硬件机制。 掌握堆栈寄存器的使用。 二、实验原理 根据实验指导书的相关内容,实验箱系统的程序转移硬件机制在于,当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树结构存储数据&#xff0…...

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. 调…...

未来机器人的大脑:如何用神经网络模拟器实现更智能的决策?

编辑:陈萍萍的公主一点人工一点智能 未来机器人的大脑:如何用神经网络模拟器实现更智能的决策?RWM通过双自回归机制有效解决了复合误差、部分可观测性和随机动力学等关键挑战,在不依赖领域特定归纳偏见的条件下实现了卓越的预测准…...

基于ASP.NET+ SQL Server实现(Web)医院信息管理系统

医院信息管理系统 1. 课程设计内容 在 visual studio 2017 平台上,开发一个“医院信息管理系统”Web 程序。 2. 课程设计目的 综合运用 c#.net 知识,在 vs 2017 平台上,进行 ASP.NET 应用程序和简易网站的开发;初步熟悉开发一…...

Qt Widget类解析与代码注释

#include "widget.h" #include "ui_widget.h"Widget::Widget(QWidget *parent): QWidget(parent), ui(new Ui::Widget) {ui->setupUi(this); }Widget::~Widget() {delete ui; }//解释这串代码,写上注释 当然可以!这段代码是 Qt …...

第一篇:Agent2Agent (A2A) 协议——协作式人工智能的黎明

AI 领域的快速发展正在催生一个新时代,智能代理(agents)不再是孤立的个体,而是能够像一个数字团队一样协作。然而,当前 AI 生态系统的碎片化阻碍了这一愿景的实现,导致了“AI 巴别塔问题”——不同代理之间…...

12.找到字符串中所有字母异位词

🧠 题目解析 题目描述: 给定两个字符串 s 和 p,找出 s 中所有 p 的字母异位词的起始索引。 返回的答案以数组形式表示。 字母异位词定义: 若两个字符串包含的字符种类和出现次数完全相同,顺序无所谓,则互为…...

docker 部署发现spring.profiles.active 问题

报错: org.springframework.boot.context.config.InvalidConfigDataPropertyException: Property spring.profiles.active imported from location class path resource [application-test.yml] is invalid in a profile specific resource [origin: class path re…...

视觉slam十四讲实践部分记录——ch2、ch3

ch2 一、使用g++编译.cpp为可执行文件并运行(P30) g++ helloSLAM.cpp ./a.out运行 二、使用cmake编译 mkdir build cd build cmake .. makeCMakeCache.txt 文件仍然指向旧的目录。这表明在源代码目录中可能还存在旧的 CMakeCache.txt 文件,或者在构建过程中仍然引用了旧的路…...

PAN/FPN

import torch import torch.nn as nn import torch.nn.functional as F import mathclass LowResQueryHighResKVAttention(nn.Module):"""方案 1: 低分辨率特征 (Query) 查询高分辨率特征 (Key, Value).输出分辨率与低分辨率输入相同。"""def __…...

GruntJS-前端自动化任务运行器从入门到实战

Grunt 完全指南:从入门到实战 一、Grunt 是什么? Grunt是一个基于 Node.js 的前端自动化任务运行器,主要用于自动化执行项目开发中重复性高的任务,例如文件压缩、代码编译、语法检查、单元测试、文件合并等。通过配置简洁的任务…...

深入浅出深度学习基础:从感知机到全连接神经网络的核心原理与应用

文章目录 前言一、感知机 (Perceptron)1.1 基础介绍1.1.1 感知机是什么?1.1.2 感知机的工作原理 1.2 感知机的简单应用:基本逻辑门1.2.1 逻辑与 (Logic AND)1.2.2 逻辑或 (Logic OR)1.2.3 逻辑与非 (Logic NAND) 1.3 感知机的实现1.3.1 简单实现 (基于阈…...