计算机组成原理 CPU组成与机器指令执行实验

一、实验目的

(1)将微程序控制器同执行部件( 整个数据通路)联机,组成一台模型计算机;

(2)用微程序控制器控制模型机数据通路;

(3)通过CPU运行九条机器指令(排除中断指令)组成的简单程序,掌握机器指令与微指令的关系,牢固建立计算机的整机概念。

二、实验任务

(1)对机器指令系统组成的简单程序进行译码。将下表的程序按指令格式手工汇编成十六进制机器代码。

地址

指令

机器代码

00H

LDA、R0、[R2]

58H

01H

LDA、R1、[R3]

5DH

02H

ADD、R0、R1

04H

03H

JC、+5

95H

04H

AND、R2、R3

3EH

05H

SUB、R3、R2

1BH

06H

STA、R3、R2

4BH

07H

MUL、R0、R1

24H

08H

STP

60H

09H

JMP、[R1]

84H

(2)按照下面框图,参考前面实验的电路图完成连线,控制器是控制部件,数据通路(包括上面各模块)是执行部件,时序产生器是时序部件。连线包括控制台、时序部分、数据通路和微程序控制器之间的连接。其中,为把操作数传送给通用寄存器组RF,数据通路上的RS1、RS0、RD1、RD0应分别与IR3至IR0连接,WR1、WR0也应接到IR1、IR0上。

三、实验工具

模拟程序

四、实验步骤及实验结果

(1)对机器指令系统组成的简单程序进行译码

(2)连线

仿真面板图:

数据通路图

(3)存程序机器代码,设置通用寄存器R2、R3及内存相关单元的数据。

●设置通用寄存器R2、R3 的值。

使R2 = 60H,R3 = 61H。

1.令DP=0,DB=0,DZ =0,使实验系统处于连续运行状态。令SWC = 0、SWB = 1、SWA = 1,使实验系统处于寄存器加载工作方式KLD。按CLR#按钮,使实验系统处于初始状态。

2.在SW7-SW0上设置一个存储器地址,该存储器地址供设置通用寄存器使用。该存储器地址最好是不常用的一个地址,以免设置通用寄存器操作破坏重要的存储器单元的内容。例如可将该地址设置为0FFH。按一次QD按钮,将0FFH写入AR0和AR1。

3.在SW7-SW0 上设置02H, 作为通用寄存器R2的寄存器号。按一次QD按钮,则将02H写入IR。

4.在SW7-SW0设置60H, 作为R2的值。按一次QD按钮,将60H写入IR指定的R2寄存器。

5.在SW7-SW0 上设置03H, 作为通用寄存器R3的寄存器号。按一次QD按钮,将03H写入IR.

6.在SW7-SW0设置61H, 作为R3的值。按一次QD按钮,将61H写入R3.

7. 设置R2、 R3结束,按CLR#按钮,使实验系统恢复到初始状态。

●存程序机器代码。

本操作中,从00地址开始存10个机器代码: 58H,5DH,04H, 95H,3EH,1BH,4BH, 24H,60H,84H。在60H存入24H,用于给R0置初值:在61H存入83H,用于给R0置初值。

1.令DP=0,DB=0,DZ=0,使实验系统处于连续运行状态。令SWC=0、SWB=1、SWA=0,使实验系统处于写双端口存储器工作方式KWE。按CLR#按钮,使实验系统处于初始状态。

2.置SW7-SW0为00H,按QD按钮,将00H写入AR1。

3.置SW7-SW0为58H, 按QD按钮,将58H写入存储器00H单元。AR1自动加1,变为01H。

4.置SW7- SW0为5DH, 按QD按钮,将5DH写入存储器01H单元。AR1自动加1,变为02H。

5.按QD按钮,使AR1+1。AR1此时为03H。

6.重复进行下去,直到将84H写入存储器09H单元。按CLR#按钮, 使实验系统恢复到初始状态。

7.置SW7- SW0为60H, 按QD按钮,将60H写入AR1。

8.置SW7- SW0为24H, 按QD按钮,将24H写入存储器60H单元。AR1自动加1,变为61H。

9.置SW7-SW0为83H, 按QD按钮,将83H写入存储器61H单元。

按CLR#按钮, 使实验系统恢复到初始状态。

(4)用单拍(DP)方式执行一遍程序

在单拍执行过程中,首先要随时监测AR2的值和IR的值,以判定程序执行到何处,正在执行哪条指令。监测微地址指示灯和判断字段指示灯,对照微程序流程图,可以判断出微指令的地址和正在进行的微操作。程序执行的结果如下: .

初值:R0未定,R1未定,R2=60H,R3=61H。存储器60H单元的内容是24H,61H单元的内容是83H。

 

1. LDA R0, [R2]

执行结果R2 = 60H,R0 = 24H。

2. LDA R1, [R3]

执行结果R3 = 61H, R1 = 83H。

3. ADD R0, R1

执行结果R0=0A7H,R1=83H,C=0。

4. JC +5

执行结果转移到03H,因为C = 0。

5. AND R2, R3

执行结果R2 =60 H, R3 =61H。

6. SUB R3, R2

执行结果R2=60H,R3=01H

7. STA R3, [R2]

执行结果R2=60H,R3=01H,存储器60单元的内容为01H。

8. MUL R0, R1

执行结果R0=15H,R1=83H

9. STP

执行结果:无变化

10. JMP [R1]

执行结果转移到83H。

第一遍执行结束。执行结果是R0=15H,R1=83H,R2=60H,R3=01H,存储器60H单元的内容是01H,61H 单元的内容是83H。

(5)用单指(DZ)方式执行一遍程序。

初值:R0= 15H,R1 = 83H,R2 = 60H,R3 = 01H,存储器60H单元的内容是01H,61H单元的内容是83H。

1. LDA RO,[R2]

执行结果R2 = 60H,R0 = 01H。

2. LDA R1,[R3]

执行结果 R3 = 01H,R1 = 5DH。

3. ADD R0,R1

执行结果R0 = 5EH,R1= 5DH,C = 0

4.JC+5

执行结果转移到03H,因为C= 0。

5. AND R2,R3

执行结果 R2=00 H,R3 =01H。

6.SUB R3,R2

执行结果 R2 = 00H,R3 = 01H

7. STA R3,[R2]

执行结果R2 = 00H,R3 = 01H,存储器00单元的内容为01H。

8.MUL RO,R1

执行结果R0 = 0B6H,R1= 5DH

9. STP

执行结果:无变化

10. JMP [R1]

执行结果转移到5DH

第二遍执行结束。执行结果是R0 = B6H,R1= 5DH,R2 = 00H,R3 = 01H,存储器60H单元的内容是01H,61H单元的内容是83H,00H单元的内容为01H。

(6)用连续方式执行一遍程序

由于00单元的内容已被修改,因此在执行前应首先恢复00H单元的内容58H。

初值:R0 = 0B6H,R1 = 5DH,R2 = 00H,R3 = 01H,存储器60H单元的内容是01H,61H单元的内容是83H,00H单元的内容为58H。

1. LDA R0,[R2]

执行结果R2= 00H,R0 = 58H。

2. LDA R1,[R3]

执行结果R3 = 01H,R1 = 5DH。

3. ADD R0,R1

执行结果 R0 = 0B5H,R1 = 5DH,C = 0

4.JC+5

执行结果转移到03H,因为C= 0。

5. AND R2,R3

执行结果R2 =00 H,R3 =01H

6. SUB R3,R2

执行结果R2 = 00H,R3 = 01H

7. STA R3,[R2]

执行结果R2 = 00H,R3 = 01H,存储器00单元的内容为01H。

8.MUL R0,R1

执行结果R0 = 41H,R1 = 5DH

9. STP

执行结果:无变化

五、个人总结

在做第3个实验任务的存程序代码时很好的了解到如何给指定地址赋予指定的值,并没按下一次QD,地址值就会加一,就可以对下一个地址进行赋值。

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

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

深度学习pytorch——2D函数优化实例(持续更新)

课程:课时46 优化问题实战_哔哩哔哩_bilibili 这就是我们今天要求的2D函数: 下图是使用python绘制出来的图像: 但是可以看出有4个最小值,但是还是不够直观,还是看课程里面给的比较好,蓝色是最低点位置&am…

Python 全栈系列236 rabbit_agent搭建

说明 通过rabbit_agent, 以接口方式实现对队列的标准操作,将pika包在微服务内,而不必在太多地方重复的去写。至少在服务端发布消息时,不必再去考虑这些问题。 在分布式任务的情况下,客户端本身会启动一个持续监听队列的客户端服…

Django(一)- 环境搭建和快速入门

一、搭建环境 1、创建Python虚拟环境 (base) C:\Users\35351>conda create -n django_study python3.9 2、安装Django (django_study) C:\Users\35351>pip install Django >> 查看安装版本 (django_study) C:\Users\35351>python -m django --version 3、安…

数据分析与挖掘

数据起源: 规模庞大,结构复杂,难以通过现有商业工具和技术在可容忍的时间内获取、管理和处理的数据集。具有5V特性:数量(Volume):数据量大、多样性(Variety)&#xff1a…

CSS(二)

一、CSS 的复合选择器 1.1 什么是复合选择器 在 CSS 中,可以根据选择器的类型把选择器分为基础选择器和复合选择器,复合选择器是建立在基础选择器之上,对基本选择器进行组合形成的。 复合选择器可以更准确、更高效的选择目标元素&#xff…

OC对象 - 关联对象(如何给分类添加成员变量)

文章目录 OC对象 - 关联对象(如何给分类添加成员变量)1. 基本使用1.1 提供的API1.1.1 添加关联对象1.1.2 获得关联对象1.1.3 移除所有关联对象1.1.3 修饰符 1.2 使用方法1.2 Key的常见用法1.2.1 使用的get方法的selecor作为key1.2.2 使用指针的地址作为k…

LeetCode每日一题——移除链表元素

移除链表元素OJ链接:203. 移除链表元素 - 力扣(LeetCode) 题目: 思路: 这与之前的移除元素的题目很相似,那么我们同样可以用类似的做法(双指针)进行解题。但是这是一个链表删除&a…

树状数组原理和代码

树状数组 求下标的对应 求i管着的下标的范围 方法:拆掉最右侧的1然后1 到你自己 query sum 1-i的和 拆掉最右侧的1 再把下一个数值吸收到sum 重复这个过程直到全变0为止 add 方法:加上最右侧的1 到上限为止 lowbit方法 单点增加范围查询模板 #inc…

no main manifest attribute, in xxx.jar

找不到主类&#xff0c;如果是maven 项目&#xff0c;在pom.xml 指定主类 <mainClass>com.example.demo.Demo2Application</mainClass>还是不行的话&#xff0c;把 <skip>true</skip>去掉

nodejs+vue高校师资管理系统python-flask-django-php

快速发展的社会中&#xff0c;人们的生活水平都在提高&#xff0c;生活节奏也在逐渐加快。为了节省时间和提高工作效率&#xff0c;越来越多的人选择利用互联网进行线上打理各种事务&#xff0c;然后线上管理系统也就相继涌现。与此同时&#xff0c;人们开始接受方便的生活方式…

从FasterTransformer源码解读开始了解大模型(1.0)了解FasterTransformer

从FasterTransformer源码解读开始了解大模型&#xff08;1.0&#xff09;了解FasterTransformer 写在前面的话 最近的一年时间真是令人感慨&#xff0c;换了个工作方向&#xff0c;学了些深度算子开发相关知识&#xff0c;工作也转到对LLM的学习和开发了。入行不算深&#xf…

谷粒商城——缓存的概念

1. 使用缓存的好处&#xff1a;减少数据库的访问频率&#xff0c;提高用户获取数据的速度。 2. 什么样的数据适合存储到缓存中&#xff1f; ①及时性、数据一致性要求不高的数据&#xff0c;例如物流信息、商品类目信息 ②访问量大更新频率不高的数据(读多、写少) 3. 读模式…

加密技术概述

传输数据时的四个问题 窃听 数字加密 假冒 消息认证或数字签名 篡改 消息认证码或数字签名 事后否认 数字签名 加密技术 将数据变成第三者的计算机无法理解的形式&#xff0c;然后再将其恢复成原本数据的一系列操作就是加密技术。 哈希函数 哈希函数可以把给定的数据转…

设计模式之状态模式(一)

设计模式专栏&#xff1a; http://t.csdnimg.cn/4Mt4u 目录 1.概述 2.结构 3.实现 4.总结 1.概述 状态模式( State Pattern)也称为状态机模式( State Machine pattern), 是允许对象在内部状态发生改变时改变它的行为,对象看起来好像修改了它的类, 属于行为型模式。 在状…

Vue3+echarts绘制世界地图

先放效果图 之前所查找的资料都没有讲清楚如何引入地图文件并绘制地图&#xff0c;下面做一个记录。 首先下载对应的地图json文件&#xff0c;这里可以参考我的这篇文章&#xff0c;提供了下载地址&#xff1a;记录echarts各种地图json文件下载地址-CSDN博客 第二步&#xff…

笔记本和台式机主板内部结构分析

笔记本和态势机主板内存接口以及配件安装位置 笔记本主板 1 以thinkpad L-490为例,使用拆机小工具拆机&#xff0c;打开后面板&#xff0c;内部结构示意图如下 台式机主板 以技嘉-B660M-AORUS-PRO-AX型号主板为例 笔记本电脑和台式机电脑的相同之处 CPU&#xff1a;笔记本…

【boost_search搜索引擎】1.获取数据源

boost搜索引擎 1、项目介绍2、获取数据源 1、项目介绍 boost_search项目和百度那种不一样&#xff0c;百度是全站搜索&#xff0c;而boost_search是一个站内搜索。而项目的宏观上实现思路就如同图上的思路。 2、获取数据源 我们要实现一个站内搜索&#xff0c;我们就要有这…

Rust 程序设计语言学习——结构体

结构体和元组类似&#xff0c;它们都包含多个相关的值。和元组一样&#xff0c;结构体的每一部分可以是不同类型。但不同于元组&#xff0c;结构体需要命名各部分数据以便能清楚的表明其值的意义。由于有了这些名字&#xff0c;结构体比元组更灵活&#xff1a;不需要依赖顺序来…

医院预约挂号系统设计与实现|jsp+ Mysql+Java+ Tomcat(可运行源码+数据库+设计文档)

本项目包含可运行源码数据库LW&#xff0c;文末可获取本项目的所有资料。 推荐阅读100套最新项目 最新ssmjava项目文档视频演示可运行源码分享 最新jspjava项目文档视频演示可运行源码分享 最新Spring Boot项目文档视频演示可运行源码分享 2024年56套包含java&#xff0c;…

初识kafka-数据存储篇1

目录 背景 1 kafka总体体系结构 2 疑问解答 2.1 高吞吐低延迟 2.2 实现分布式存储和数据读取 2.3 如何保证数据不丢失 背景 最近在和产品过项目审批的时候&#xff0c;深刻感受到业务方对系统的时时响应提出了更高的要求。目前手上大部分的业务都是基础定时任务去实现的&…