27 - 数据传送指令

---- 整理自B站UP主 踌躇月光 的视频

文章目录

  • 1. CPU 电路
  • 2. 数据传送指令的几种情况
  • 3. 实验工程
  • 4. 实验结果

1. CPU 电路

请添加图片描述

2. 数据传送指令的几种情况

# program.asm; 1.
; MOV A, 5;; 2.
; MOV A, B;; 3.
; MOV A, [5];; 4.
; MOV B, 6
; MOV A, [B]; 5.
; MOV [0x2f], 5;; 6. 
; MOV A, 0x18
; MOV [0x2f], A; 7.
; MOV [0x2e], 0x18
; MOV [0x2f], [0x2e]; 8. 
; MOV [0x18], 0xfe
; MOV A, 0x18
; MOV [0x2f], [A]; 9.
; MOV A, 0x18
; MOV [A], 5; 10.
; MOV A, 0x18
; MOV B, 0x33
; MOV [A], B; 11. 
; MOV [0x30], 0xdd
; MOV A, 0x18
; MOV [A], [0x30]; 12. 
; MOV [0x30], 0xee
; MOV B, 0x30
; MOV A, 0x18
; MOV [A], [B]HLT;

3. 实验工程

【27 - 数据传送指令】

import pinFETCH = [pin.PC_OUT | pin.MAR_IN,pin.RAM_OUT | pin.IR_IN | pin.PC_INC,pin.PC_OUT | pin.MAR_IN,pin.RAM_OUT | pin.DST_IN | pin.PC_INC,pin.PC_OUT | pin.MAR_IN,pin.RAM_OUT | pin.SRC_IN | pin.PC_INC,
]MOV = 0 | pin.ADDR2 # MOV指令定义为 1000 xxxx
ADD = (1 << pin.ADDR2_SHIFT) | pin.ADDR2 # ADD指令定义为 1001 xxxxNOP = 0
HLT = 0x3fINSTRUCTIONS = {2: { # 二地址指令MOV: { # MOV指令寻址方式(pin.AM_REG, pin.AM_INS): [ # (寄存器寻址,立即寻址) ==> MOV A,5pin.DST_W | pin.SRC_OUT, # 微指令:读取SRC寄存器里数据(5)送入DST指定的寄存器(A)中],(pin.AM_REG, pin.AM_REG): [ # MOV A, Bpin.DST_W | pin.SRC_R # 写寄存器(A),读寄存器(B)],(pin.AM_REG, pin.AM_DIR): [ # MOV A, [5]pin.SRC_OUT | pin.MAR_IN, # 从SRC寄存器读,送到MAR寄存器(RAM地址上)pin.DST_W | pin.RAM_OUT # 读取RAM指定地址的数据,写到寄存器(A),],(pin.AM_REG, pin.AM_RAM): [ # MOV A, [B]pin.SRC_R | pin.MAR_IN, # 读取寄存器(B)数据,送到MAR寄存器(RAM地址上)pin.DST_W | pin.RAM_OUT # 读取RAM指定地址的数据,写到寄存器(A)],(pin.AM_DIR, pin.AM_INS): [ # MOV [0x2f], 5pin.DST_OUT | pin.MAR_IN, # 读取DST寄存器数据,送到MAR寄存器(RAM地址上)pin.RAM_IN | pin.SRC_OUT # 从SRC寄存器读取数据5,写入RAM中],(pin.AM_DIR, pin.AM_REG): [ # MOV [0x2f], Apin.DST_OUT | pin.MAR_IN,pin.RAM_IN | pin.SRC_R],(pin.AM_DIR, pin.AM_DIR): [ # MOV [0x2f], [0x2e]pin.SRC_OUT | pin.MAR_IN,pin.RAM_OUT | pin.T1_IN,pin.DST_OUT | pin.MAR_IN,pin.RAM_IN | pin.T1_OUT],(pin.AM_DIR, pin.AM_RAM): [ # MOV [0x2f], [A]pin.SRC_R | pin.MAR_IN,pin.RAM_OUT | pin.T1_IN,pin.DST_OUT | pin.MAR_IN,pin.RAM_IN | pin.T1_OUT],(pin.AM_RAM, pin.AM_INS): [ # MOV [A], 5pin.DST_R | pin.MAR_IN,pin.RAM_IN | pin.SRC_OUT],(pin.AM_RAM, pin.AM_REG): [ # MOV [A], Bpin.DST_R | pin.MAR_IN,pin.RAM_IN | pin.SRC_R],(pin.AM_RAM, pin.AM_DIR): [ # MOV [A], [0x30]pin.SRC_OUT | pin.MAR_IN,pin.RAM_OUT | pin.T1_IN,pin.DST_R | pin.MAR_IN,pin.RAM_IN | pin.T1_OUT],(pin.AM_RAM, pin.AM_RAM): [ # MOV [A], [B]pin.SRC_R | pin.MAR_IN,pin.RAM_OUT | pin.T1_IN,pin.DST_R | pin.MAR_IN,pin.RAM_IN | pin.T1_OUT],}},1: {}, # 一地址指令0: { # 零地址指令NOP: [pin.CYC, # 让指令周期清零,跳过这次指令],HLT: [pin.HLT, # 指令停止]}
}# print(bin(MOV))
  1. 编译工程中的 controller.py 生成 micro.bin,加载进入到 CPU 控制单元上的 ROM 中
  2. 编译工程中的 compiler.py 生成汇编的编译结果 program.bin,加载到 RAM 中
  3. 运行

4. 实验结果

  • 依次将 2. 中的集中情况的注释打开,编译运行,这里只给出最后一次的结果。
...; 12. 
MOV [0x30], 0xee
MOV B, 0x30
MOV A, 0x18
MOV [A], [B]HLT;
...

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

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

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

相关文章

Zynq 7000 系列中成功执行BootROM的条件

Zynq 7000设备的启动需要正确的电压序列和I/O引脚控制。BootROM的流程由复位类型、启动模式引脚设置以及启动映像来控制。BootROM对所选启动设备的引脚连接有特定的要求。 Zynq 7000 SoC设备具有电源、时钟和复位要求&#xff0c;这些要求必须得到满足&#xff0c;才能成功执行…

每日OJ题_DFS回溯剪枝⑦_力扣77. 组合

目录 力扣77. 组合 解析代码 力扣77. 组合 77. 组合 难度 中等 给定两个整数 n 和 k&#xff0c;返回范围 [1, n] 中所有可能的 k 个数的组合。 你可以按 任何顺序 返回答案。 示例 1&#xff1a; 输入&#xff1a;n 4, k 2 输出&#xff1a; [[2,4],[3,4],[2,3],[1,…

Oracle集群-常用查询及操作(工作日常整理)

1.Oracle集群状态 select * from gv$instance; 示例结果&#xff1a; 2.Oracle集群-增大表空间 常见问题&#xff1a; 导入时或使用时&#xff0c;提示无法extend table ,增加表空间即可 常用操作&#xff1a; 1&#xff09;查询表空间 select * from dba_tablespaces; --…

数据结构——二叉树的顺序存储(堆)(C++实现)

数据结构——二叉树的顺序存储&#xff08;堆&#xff09;&#xff08;C实现&#xff09; 二叉树可以顺序存储的前提堆的定义堆的分类大根堆小根堆 整体结构把握两种调整算法向上调整算法递归版本 非递归版本向下调整算法非递归版本 向上调整算法和向下调整算法的比较 我们接着…

owasp top 10 越权漏洞·

指的是用户权限不明晰。 垂直越权&#xff1a;低权限用户&#xff0c;在无任何身份校验的情况下&#xff0c;能够使用高权 限&#xff08;不属于自己&#xff09;模块&#xff08;功能&#xff09;&#xff0c;或访问高权限拥有的数据&#xff1b; 水平越权&#xff1a;指相同…

华为MRS服务使用记录

背景&#xff1a;公司的业务需求是使用华为的这一套成品来进行开发&#xff0c;使用中发现&#xff0c;这个产品跟原生的Hadoop的那一套的使用&#xff0c;还是有很大的区别的&#xff0c;现记录一下&#xff0c;避免以后忘了 一、原始代码的下载 下载地址&#xff1a;MRS样例…

UVa12313 A Tiny Raytracer

UVa12313 A Tiny Raytracer 题目链接题意分析AC 代码 题目链接 UVA - 12313 A Tiny Raytracer 题意 给出 《训练指南》题意翻译 本题的任务是实现一个小型光线追踪渲染器。场景由若干三角形网格&#xff08;triangle mesh&#xff09;组成&#xff0c;有且仅有一个点光源&…

R语言高级数据管理

一&#xff0c;数学函数 绝对值函数abs(x) sqrt(x) 开平方根 不小于某个数的最小整数ceiling(x) 不大于某个数的最大整数floor(x) 四舍五入round(x) sin(x) cos(x) log(x) 二&#xff0c;统计函数 求平均值 > x<-c(2,3,4,5,6,7,8,9,10) > mean(x) 求和 &g…

RustGUI学习(iced)之小部件(二):如何使用滑动条部件

前言 本专栏是学习Rust的GUI库iced的合集&#xff0c;将介绍iced涉及的各个小部件分别介绍&#xff0c;最后会汇总为一个总的程序。 iced是RustGUI中比较强大的一个&#xff0c;目前处于发展中&#xff08;即版本可能会改变&#xff09;&#xff0c;本专栏基于版本0.12.1. 概述…

抓包理解协议

用的Wireshark 抓包 1.抓包网卡选择 - WLAN 无线网卡&#xff0c;其他是本地虚拟机的网卡 这里分别是开始捕获、停止捕获、重新捕获、网卡选择&#xff0c;下面是可以过滤选择 过滤tcp包 3次握手&#xff1a; source是源地址&#xff0c; destination是目标地址&#xff0c;in…

QT文件上传带进度条实例(含源码)

一、Qt上传知识点 QNetworkAccessManager QNetworkAccessManager 是 Qt 中用于执行网络操作的类,它提供了一种方便的方式来发送网络请求并处理响应。以下是关于 QNetworkAccessManager 的一些重要知识点: 发送网络请求:QNetworkAccessManager 可以通过不同的方法发送网络请…

CSS3(响应式布局)

#过渡# 属性连写&#xff1a; transition: width 2s linear 1s; //前一个时间用于表示过渡效果持续时间&#xff0c;后一个时间用于表示过渡效果的延迟。 #转换# #2D转换# 和 #3D转换# 注意&#xff1a;其中angle对应单位为&#xff1a;deg #圆角# #边框# …

使用Docker部署Jupyter Notebook并结合花生壳的内网穿透实现远程访问(详文)

一、前言 本文主要介绍如何利用宝塔面板中的Docker 3.9.3管理器,使用Docker本地部署Jupyter Notebook,并结合花生壳内网穿透工具实现任意浏览器公网远程访问Jupyter登录界面。 安装完成后在宝塔面板中图例 Jupyter Notebook是一个交互式笔记本,支持运行40多种编程语言。…

会声会影2024破解电脑版下载附带永久免费激活码

会声会影2024是一款功能强大的视频编辑软件&#xff0c;它凭借直观易用的界面、全面的编辑工具以及丰富的特效和转场效果&#xff0c;受到了广大视频编辑爱好者和专业人士的喜爱。以下是对会声会影2024的详细介绍&#xff1a; 会声会影最新一键安装包下载如下&#xff1a; ht…

sqlserver在执行维护计划备份时报错,重新设置维护任务,也同样出错,另一计划的异地备份又正常。

出错提示&#xff1a;已以用户 NT Service\SQLSERVERAGENT 的身份执行。 最大值(1)&#xff0c;因此导致失败。当错误数达到 MaximumErrorCount 中指定的数目时将发生这种情况。请更改 MaximumErrorCount 或纠正这些错误。 警告结束 DTExec: 已返回包执行 DTSER_FAILURE (1)。…

PotatoPie 4.0 实验教程(23) —— FPGA实现摄像头图像伽马(Gamma)变换

为什么要进行Gamma校正 图像的 gamma 校正是一种图像处理技术&#xff0c;用于调整图像的亮度和对比度&#xff0c;让显示设备显示的亮度和对比度更符合人眼的感知。Gamma 校正主要用于修正显示设备的非线性响应&#xff0c;以及在图像处理中进行色彩校正和图像增强。 以前&am…

《从零开始的Java世界》11网络编程

《从零开始的Java世界》系列主要讲解Javase部分&#xff0c;从最简单的程序设计到面向对象编程&#xff0c;再到异常处理、常用API的使用&#xff0c;最后到注解、反射&#xff0c;涵盖Java基础所需的所有知识点。学习者应该从学会如何使用&#xff0c;到知道其实现原理全方位式…

LangChain入门:24.通过Baby AGI实现自动生成和执行任务

随着 ChatGPT 的崭露头角,我们迎来了一种新型的代理——Autonomous Agents(自治代理或自主代理)。 这些代理的设计初衷就是能够独立地执行任务,并持续地追求长期目标。 在 LangChain 的代理、工具和记忆这些组件的支持下,它们能够在无需外部干预的情况下自主运行,这在真…

冯唐成事心法笔记 —— 知己

系列文章目录 冯唐成事心法笔记 —— 知己 冯唐成事心法笔记 —— 知人 冯唐成事心法笔记 —— 知世 冯唐成事心法笔记 —— 知智慧 文章目录 系列文章目录卷首语 管理是一生的日常&#xff0c;成事是一生的修行PART 1 知己 用好自己的天赋如何管理自我第一&#xff0c;如何…

C++学习随笔(12)—— list

本章我们来了解一下list 目录 1. list的介绍及使用 1.1 list的介绍 1.2 list的使用 1.2.1 list的构造 1.2.2 list iterator的使用 1.2.3 list capacity 1.2.4 list element access 1.2.5 list modifiers 1.2.6 list的迭代器失效 1. list的介绍及使用 1.1 list的介绍…