计算机组成原理实训

文章目录

    • 一、指令操作
      • 1、PC程序计数器
      • 2、目标编码
      • 3、总线规则
      • 4、算数运算
      • 5、逻辑运算
      • 6、源编码
      • 7、微变址
    • 二、编码和微地址
      • 1、指令操作
      • 2、我的操作

问题描述

一、指令操作

1、PC程序计数器

在这里插入图片描述
PC装载(E/M IP = 00): 当 E/M IP 设置为 00 时,可能表示将某个值加载到程序计数器(PC)中,以指定下一条要执行的指令的地址。

PC增量(E/M IP = 10): 当 E/M IP 设置为 10 时,可能表示程序计数器(PC)应该递增,以指向下一条顺序执行的指令的地址。

PC保持(E/M IP = 11): 当 E/M IP 设置为 11 时,可能表示要保持程序计数器(PC)的当前值,即不进行改变,从而执行当前指令的地址。

2、目标编码

在这里插入图片描述

在这里插入图片描述
o2 o1 o0 = 111 (禁止): 该编码可能表示禁止目标寄存器的选择,可能是一个控制信号,指示不执行任何目标寄存器的操作。

o2 o1 o0 = 110 (MAR): 该编码可能表示选择内存地址寄存器(Memory Address Register,MAR)作为目标寄存器。

o2 o1 o0 = 101 (BX): 该编码可能表示选择基址寄存器(Base Register,BX)作为目标寄存器。

o2 o1 o0 = 100 (AX): 该编码可能表示选择累加器寄存器(Accumulator,AX)作为目标寄存器。

o2 o1 o0 = 011 (SP): 该编码可能表示选择堆栈指针寄存器(Stack Pointer,SP)作为目标寄存器。

o2 o1 o0 = 010 (IOW): 该编码可能表示选择输入/输出寄存器(Input/Output Register,IOW)作为目标寄存器。

o2 o1 o0 = 001 (XWR): 该编码可能表示选择扩展工作寄存器(Extended Working Register,XWR)作为目标寄存器。

o2 o1 o0 = 000 (RWR): 该编码可能表示选择通用寄存器(General Register,RWR)作为目标寄存器。

3、总线规则

在这里插入图片描述
W XP OP = 000 (字传递): 该编码可能表示进行字(word)传递,即在总线上传递一个完整的字

W XP OP = 100 (偶送偶): 该编码可能表示进行偶数到偶数的传递,即从偶数地址传递到偶数地址

W XP OP = 101 (偶送奇): 该编码可能表示进行偶数到奇数的传递,即从偶数地址传递到奇数地址。

W XP OP = X10 (奇送偶): 该编码可能表示进行奇数到偶数的传递,即从奇数地址传递到偶数地址。

W XP OP = X11 (奇送奇): 该编码可能表示进行奇数到奇数的传递,即从奇数地址传递到奇数地址。

4、算数运算

在这里插入图片描述
MS2 S1 So = 0000 (A+B+C): 该编码可能表示执行加法运算,其中 A、B 和 C 分别是相加的操作数。

MS2 S1 So = 0001 (A-B-C): 该编码可能表示执行减法运算,其中 A 是被减数,B 是减数,C 是借位。

MS2 S1 So = 0010 (RLC): 该编码可能表示执行循环左移(Rotate Left through Carry)操作。

MS2 S1 So = 0011 (RRC): 该编码可能表示执行循环右移(Rotate Right through Carry)操作。

MS2 S1 So = 0100 (A+B): 该编码可能表示执行无进位加法运算,即 A 和 B 相加。

MS2 S1 So = 0101 (A-B): 该编码可能表示执行无借位减法运算,即 A 减去 B。

MS2 S1 So = 0110 (RL): 该编码可能表示执行左移(Shift Left)操作。

MS2 S1 So = 0111 (RR): 该编码可能表示执行右移(Shift Right)操作。

5、逻辑运算

在这里插入图片描述
M S2 S1 S0 = 1000 (B): 该编码可能表示将输入 B 作为输出。

M S2 S1 S0 = 1001 (A取反): 该编码可能表示对输入 A 进行逻辑取反操作。

M S2 S1 S0 = 1010 (A减1): 该编码可能表示对输入 A 执行减1操作。

M S2 S1 S0 = 1011 (A=0): 该编码可能表示将输出置为零。

M S2 S1 S0 = 1100 (A逻辑或B): 该编码可能表示执行 A 和 B 的逻辑或操作。

M S2 S1 S0 = 1101 (A逻辑与B): 该编码可能表示执行 A 和 B 的逻辑与操作。

M S2 S1 S0 = 1110 (A加1): 该编码可能表示对输入 A 执行加1操作。

M S2 S1 S0 = 1111 (A): 该编码可能表示将输入 A 作为输出。

6、源编码

在这里插入图片描述

在这里插入图片描述
X2 X1 XO = 111 (禁止): 该编码可能表示禁止数据传送或选择源寄存器。

X2 X1 XO = 110 (ALU): 该编码可能表示选择ALU(算术逻辑单元)的输出作为数据传送的源。

X2 X1 XO = 101 (SP): 该编码可能表示选择堆栈指针寄存器(Stack Pointer,SP)的值作为数据传送的源。

X2 X1 XO = 100 (IOR): 该编码可能表示选择输入/输出寄存器(Input/Output Register,IOR)的值作为数据传送的源。

X2 X1 XO = 011 (MRD): 该编码可能表示进行内存读取操作,选择存储器数据寄存器(Memory Read Data,MRD)的值作为数据传送的源。

X2 X1 XO = 010 (XRD): 该编码可能表示选择扩展寄存器数据寄存器(Extended Register Data,XRD)的值作为数据传送的源。

X2 X1 XO = 001 (RRD): 该编码可能表示选择通用寄存器数据寄存器(Register Read Data,RRD)的值作为数据传送的源。

X2 X1 XO = 000 (PC): 该编码可能表示选择程序计数器(Program Counter,PC)的值作为数据传送的源。

7、微变址

在这里插入图片描述
IR lu lcz = 111 (禁止): 该编码可能表示禁止微变址操作,即不进行微操作的变址。

IR lu lcz = 110 (条件变址): 该编码可能表示进行条件微变址操作,其中微操作的变址受到某些条件的限制。

IR lu lcz = 101 (转移变址): 该编码可能表示进行转移微变址操作,即跳转到另一个微程序地址执行。

IR lu lcz = 100 (结尾变址): 该编码可能表示进行结尾微变址操作,即当前微程序的结束或者跳转到下一个微程序。

二、编码和微地址

;基本模型机程序#LOAD "czzwd1.IS"         ;预调入指令系统/微程序
#SET RAM 0260h = 5500h  ;数据区0260H单元预置数据5500hdata    segment         ;将程序装载到数据存储器assume ds:dataorg   0
start:  in    r0, iolin    r0, iohadd   r0, 0260hXNOR  r0,r1sta   0261h, r0out   ioh, 0261hjmp   startzjor   IOL,*data    endsend   start
;基本模型机指令系统;助记符 操作数              指令码 长度
;-----------------------------------------------------
IN      R0,IOL              20     1             ;将IOL数据读出到寄存器R0
IN      R0,IOH              22     1             ;将IOH数据读取到寄存器R0
ADD     R0,*                30     3             ;直接字节加到寄存器R0
XNOR    R0,R1               40     1             ;与或非运算
STA     *,R0                60     3             ;寄存器R0写入直接内存
OUT     IOH,*               80     3             ;直接字节输出到IOH
JMP     *                   A0     3             ;无条件转移
zjor    IOL,*               C0     3             ;求或值

在这里插入图片描述

1、指令操作

地址的判断
在这里插入图片描述
读取低位
在这里插入图片描述
读取高位

与或非运算
在这里插入图片描述
输出运算
在这里插入图片描述
寄存器ro写到内存
在这里插入图片描述
输出
在这里插入图片描述
无条件转移到
在这里插入图片描述
ADD
在这里插入图片描述

REG 通用寄存器 0001

请添加图片描述
在这里插入图片描述
在这里插入图片描述
请添加图片描述

2、我的操作

;基本模型机程序#LOAD "czzwd1.IS"         ;预调入指令系统/微程序
#SET RAM 0260h = 5500h  ;数据区0260H单元预置数据5500hdata    segment         ;将程序装载到数据存储器assume ds:dataorg   0
start:  in    r0, iolred   r0, 0260hor    r0jx    0260hsee   r0, 0260hhunhe   r0, r1add     r0,0260hjmp   startdata    endsend   start
;基本模型机指令系统;助记符 操作数              指令码 长度
;-----------------------------------------------------
IN      R0,IOL              20     1             ;将IOL数据读出到寄存器R0
RED     R0,*                30     3             ;寄存器R0-0260h中数据,存储到寄存器Sp(直接寻址)
OR      R0                  40     1             ;(寄存器寻址)或运算,将sp当做地址,放到ax后到ar取出数据,放在cx中,将sp放在ax,cx放在bx进行或运算,最后放到sp
JX      *                   60     3             ;间接寻址,存储到寄存器
SEE     R0,*                80     3             ;寄存器寻址+直接寻址
HUNHE   R0,R1               90     1             ;寄存器-寄存器作为地址,找到数据然后加一,存储到寄存器
ADD     R0,*                C0     3             ;(寄存器间接)+pc间接-一个数
JMP     *                   A0     3             ;无条件转移

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

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

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

相关文章

【ROS2】MOMO的鱼香ROS2(三)ROS2入门篇——ROS2第一个节点

ROS2第一个节点 引言1 认识ROS2节点1.1 节点之间的交互1.2 节点的命令行指令1.3 工作空间1.4 功能包1.4.1 功能包获取安装1.4.2 功能包相关的指令 ros2 pkg 2 ROS2构建工具—Colcon2.1 安装Colcon2.2 测试编译2.3 Colcon其他指令 3 使用RCLPY编写节点3.1 创建Python功能包3.2 编…

2023-12-14 LeetCode每日一题(用邮票贴满网格图)

2023-12-14每日一题 一、题目编号 2132. 用邮票贴满网格图二、题目链接 点击跳转到题目位置 三、题目描述 给你一个 m x n 的二进制矩阵 grid ,每个格子要么为 0 (空)要么为 1 (被占据)。 给你邮票的尺寸为 stam…

快速上手:探索Spring MVC的学习秘籍!

SpringMVC概述 1,SpringMVC入门案例1.2 案例制作步骤1:创建Maven项目步骤2:补全目录结构步骤3:导入jar包步骤4:创建配置类步骤5:创建Controller类步骤6:使用配置类替换web.xml步骤7:配置Tomcat环境步骤8:启动运行项目步骤9:浏览器访问步骤10:修改Controller返回值解…

单片机数据发送程序

#include<reg51.h> //包含单片机寄存器的头文件 /***************************************************** 函数功能&#xff1a;向PC发送一个字节数据 ***************************************************/ void Send(unsigned char dat) { SBUFdat; whil…

【新手向】VulnHub靶场MONEYBOX:1 | 详细解析

MONEYBOX:1 安装靶机 作为一名新手&#xff0c;首先要配置好环境&#xff0c;才能进行下一步的操作。 将下载的ova文件导入VirtualBox。 VirtualBox下载地址&#xff1a;https://www.oracle.com/cn/virtualization/technologies/vm/downloads/virtualbox-downloads.html 选择…

手把手教你如何配置 AWS WAF 入门

文章目录 1 前言2 新手第一步3 实践3.1 了解托管规则3.2 编写自己的DIY规则3.3 配置实战A&#xff0c;控制泛洪攻击&#xff08;攻击请求速率&#xff09;3.4 配置实战B&#xff1a;当检查到特定路径请求的时候拒绝对方的试探 4 更进一步4.1 什么是合理的规则设计&#xff1f;如…

Leetcode每日一题:1599.经营摩天轮的最大利润

前言&#xff1a;本题是一道逻辑细节题&#xff0c;考察阅读理解并转化为代码的能力&#xff0c;很多细节 题目描述&#xff1a; 你正在经营一座摩天轮&#xff0c;该摩天轮共有 4 个座舱 &#xff0c;每个座舱 最多可以容纳 4 位游客 。你可以 逆时针 轮转座舱&#xff0c;但…

基于图神经网络的动态物化视图管理

本期 Paper Reading 主要介绍了发布于 2023 年 ICDE 的论文《Dynamic Materialized View Management using Graph Neural Network》&#xff0c;该文研究了动态物化视图管理问题&#xff0c;提出了一个基于 GNN 的模型。在真实的数据集上的实验结果表明&#xff0c;取得了更高的…

redis 从0到1完整学习 (十二):RedisObject 之 List 类型

文章目录 1. 引言2. redis 源码下载3. redisObject 管理 List 类型的数据结构3.1 redisObject 管理 List 类型3.2 List PUSH 源码 4. 参考 1. 引言 前情提要&#xff1a; 《redis 从0到1完整学习 &#xff08;一&#xff09;&#xff1a;安装&初识 redis》 《redis 从0到1…

鸿蒙OS应用开发之气泡提示

前面学习了弹窗提示,其实有时候只是想在旁边做一些说明,那么采用弹窗的方式就比较麻烦一些,这时可以采用系统里面的气泡提示方式。 系统也提供了几种方式弹出气泡提示,最简单的一种是采用bindPopup属性。它的定义如下: 在后面的参数设置里,也是比较复杂的形式。我们先来演…

内存泄漏检测工具

1. vs/vc(windows下)自带的检测工具 将下面的语句加到需要调试的代码中 #define _CRTDBG_MAP_ALLOC // 像一个开关,去开启一些功能,这个必须放在最上面 #include <stdlib.h> #include <crtdbg.h>// 接管new操作符 原理: 就是使用新定义的DBG_NEW去替换代码中的n…

Jetpack Compose中使用Android View

使用AndroidView创建日历 Composable fun AndroidViewPage() {AndroidView(factory {CalendarView(it)},modifier Modifier.fillMaxWidth(),update {it.setOnDateChangeListener { view, year, month, day ->Toast.makeText(view.context, "${year}年${month 1}月$…

x-cmd pkg | openssl - 密码学开源工具集

目录 简介首次用户技术特点竞品分析进一步阅读 简介 OpenSSL 是一个开源的密码库和 SSL/TLS 协议实现&#xff0c;它提供了一组密码学工具和加密功能&#xff0c;用于保护数据通信的安全性。项目发展历史可以追溯到 1998 年&#xff0c;源自 Eric A. Young 和 Tim J. Hudson 开…

Docker的一个简单例子(一)

文章目录 环境示例准备构建启动/停止容器更新应用分享应用 参考 环境 RHEL 9.3Docker Community 24.0.7 示例 准备 从github克隆 getting-started-app 项目&#xff1a; git clone https://github.com/docker/getting-started-app.git查看项目&#xff1a; ➜ getting-s…

I.MX8QM flexcan移植

Android SDK&#xff1a;imx8_13.0.0_1.2.0(android 13 u-boot 2022.04 kernel 5.15.74) 一、kernel 内核配置&#xff1a; # 相应的defconfig中添加使能下面两个宏。 # 官方默认的配置可能是以模块的方式编译&#xff0c;这里直接将can驱动编译到内核中 CONFIG_CANy CONFIG…

C++面试宝典第12题:数组元素相除

题目 从控制台输入若干个整数作为数组,将数组中每一个元素除以第一个元素的结果,作为新的数组元素值。比如:可以先输入3,作为数组元素的个数;然后输入3个整数,作为数组元素的值。 解析 这道题本身并不复杂,但里面隐藏了不少“坑点”和“雷区”,主要考察应聘者全面思考问…

vue项目中实现预览pdf

vue项目中实现预览pdf 1. iframe <iframe :src"pdfSrc"></iframe> ​data() {return {pdfSrc: http://192.168.0.254:19000/trend/2023/12/27/5635529375174c7798b5fabc22cbec45.pdf,}},​iframe {width: 100%;height: calc(100vh - 132px - 2 * 20px -…

数据结构:堆的三部曲 (一)堆的实现

堆的实现 1.堆的结构1.1堆的定义理解 2.堆的实现&#xff08;以小根堆为例&#xff09;2.1 堆结构体的定义2.2 堆的插入交换函数向上调整算法插入函数的代码 2.3 堆的删除向下调整算法&#xff1a;删除函数的代码&#xff1a; 2.4其他操作 3.测试以及完整源代码实现3.1测试代码…

typore自定义删除线快捷键

打开高级设置 设置快捷键 重新打开typore

Java实现短信发送业务

1、业务需求 发送短信功能是一个很普遍的需求&#xff0c;比如验证码&#xff0c;快递单号&#xff0c;通知信息一类。 而在Java中实现短信功能相对简单&#xff0c;只需要调用短信服务商提供的API。接下来以阿里云为例&#xff0c;介绍如何实现短信发送功能&#xff0c;其他短…