实验三 I/O地址译码
一、实验目的
掌握I/O地址译码电路的工作原理。
二、实验电路
实验电路如图1所示,其中74LS74为D触发器,可直接使用实验台上数字电路实验区的D触发器,74LS138为地址译码器, Y0:280H~287H,Y1:288H~28FH,Y2:290H~297H,Y3:298H~29FH,Y4:2A0H~2A7H,Y5:2A8H~2AFH,Y6:2B0H~2B7H,Y7:2B8H~2BFH。

三、实验内容
CPU执行I/O指令且地址在280H~2BFH范围内,译码器选中,必有一根译码线输出负脉冲。利用这个负脉冲控制L7发光二极管闪烁发光(亮、灭、亮、灭…),时间间隔通过软件延时实现。
四、编程提示
1.实验电路中D触发器CLK端输入脉冲Y4,上升沿使Q端输出高电平L7发光,CD端加低电平L7灭。
2. 执行下面两条指令
MOV DX,2A0H
OUT DX,AL(或IN AL,DX)
Y4输出一个负脉冲。
执行下面两条指令
MOV DX,2A8H
OUT DX,AL(或IN AL,DX)
Y5输出一个负脉冲。
五、实验程序(必须加注释)和结果
; 定义输出端口1的地址
outport1 equ 2a0h
; 定义输出端口2的地址
outport2 equ 2a8h
; 数据段定义
DATAS SEGMENT
; 定义字符串mess1
mess1 DB 'Kruanjian221 Liuxijing 2022900616 AND HuTiaWen2022900615',0DH,0AH,'$'
; 定义字符串mess2
mess2 DB 'end with any key',0DH,0AH,'$'
; 定义字符串mess3
mess3 DB 'over',0DH,0AH,'$'
DATAS ENDS
; 代码段定义
code segment
assume cs:code
start:
; 将数据段地址赋给ax
MOV ax,DATAS
; 将ax的值赋给ds
MOV ds,ax
; 设置ah为9,准备调用21h中断显示字符串
MOV ah,9
; 将mess1的偏移地址赋给dx
MOV dx,offset mess1
; 调用21h中断显示字符串
int 21h
; 设置ah为9,准备调用21h中断显示字符串
MOV ah,9
; 将mess2的偏移地址赋给dx
MOV dx,offset mess2
; 调用21h中断显示字符串
int 21h
AG:
; 将outport1的地址赋给dx
mov dx,outport1
; 将al的值输出到dx指定的端口
out dx,al
; 调用延时子程序
call delay ;调延时子程序
; 将outport2的地址赋给dx
mov dx,outport2
; 将al的值输出到dx指定的端口
out dx,al
; 调用延时子程序
call delay ;调延时子程序
; 设置ah为1,准备调用16h中断读取键盘输入
mov ah,1
; 调用16h中断读取键盘输入
int 16h
; 如果没有键盘输入,跳转到AG标签处继续循环
je AG
; 设置ah为4ch,准备调用21h中断结束程序
mov ah,4ch
; 调用21h中断结束程序
int 21h
; 延时子程序定义
delay proc near ;延时子程序
; 将5000赋给bx
mov bx,5000
lll:
; 将0赋给cx
mov cx,0
ll:
; 循环cx次
loop ll
; bx减1
dec bx
; 如果bx不等于0,跳转到lll标签处继续循环
jne lll
; 子程序返回
ret
delay endp
code ends
; 程序结束
end start
设计思路:
- 数据段定义(DATAS SEGMENT):
定义了三个字符串:mess1、mess2和mess3。这些字符串用于在屏幕上显示信息。
- 代码段定义(code segment):
程序的主体部分,包含了初始化数据段、显示消息、循环输出数据和延时的逻辑。
- 初始化数据段(MOV ax,DATAS / MOV ds,ax):
将数据段的地址加载到ax寄存器,然后将ax的值赋给ds寄存器,以便程序可以访问数据段中的数据。
- 显示消息(MOV ah,9 / MOV dx,offset mess1 / int 21h):
使用int 21h中断的功能9来显示字符串。首先设置ah为9,然后将字符串的偏移地址赋给dx,最后调用int 21h中断。
- 循环输出数据(AG:...):
程序的主要循环部分,通过两个指定的端口(outport1和outport2)输出数据,并在每次输出后调用延时子程序。
- 延时子程序(delay proc near):
一个简单的延时子程序,。
- 检测键盘输入(mov ah,1 / int 16h):
使用int 16h中断的功能1来检测键盘输入。如果没有键盘输入,程序将继续循环;如果有键盘输入,程序将结束。
- 结束程序(mov ah,4ch / int 21h):
使用int 21h中断的功能4ch来结束程序。
相关文章:
实验三 I/O地址译码
一、实验目的 掌握I/O地址译码电路的工作原理。 二、实验电路 实验电路如图1所示,其中74LS74为D触发器,可直接使用实验台上数字电路实验区的D触发器,74LS138为地址译码器, Y0:280H~287H&…...
视觉语言导航(VLN):连接语言、视觉与行动的桥梁
文章目录 1. 引言:什么是VLN及其重要性?2. VLN问题定义3. 核心挑战4. 基石:关键数据集与模拟器5. 评估指标6. 主要方法与技术演进6.1 前CLIP时代:奠定基础6.2 后CLIP时代:视觉与语言的统一 7. 最新进展与前沿趋势 (202…...
计算机网络中科大 - 第7章 网络安全(详细解析)-以及案例
目录 🛡️ 第8章:网络安全(Network Security)优化整合笔记📌 本章学习目标 一、网络安全概念二、加密技术(Encryption)1. 对称加密(Symmetric Key)2. 公钥加密࿰…...
2026《数据结构》考研复习笔记一(C++基础知识)
C基础知识复习 一、数据类型二、修饰符和运算符三、Lambda函数和表达式四、数学函数五、字符串六、结构体 一、数据类型 1.1基本类型 基本类型 描述 字节(位数) 范围 char 字符类型,存储ASCLL字符 1(8位) -128…...
XCTF-web(四)
unserialize3 需要反序列化一下:O:4:“xctf”:2:{s:4:“flag”;s:3:“111”;} php_rce 题目提示rce漏洞,测试一下:?s/Index/\think\app/invokefunction&functioncall_user_func_array&vars[0]phpinfo&vars[1][]1 flag࿱…...
在Vue项目中查询所有版本号为 1.1.9 的依赖包名 的具体方法,支持 npm/yarn/pnpm 等主流工具
以下是 在Vue项目中查询所有版本号为 1.1.9 的依赖包名 的具体方法,支持 npm/yarn/pnpm 等主流工具: 一、使用 npm 1. 直接过滤依赖树 npm ls --depth0 | grep "1.1.9"说明: npm ls --depth0:仅显示直接依赖…...
若依微服务版启动小程序后端
目录标题 本地启动,dev对应 nacos里的 xxx-xxx-dev配置文件 本地启动,dev对应 nacos里的 xxx-xxx-dev配置文件...
莒县第六实验小学:举行“阅读世界 丰盈自我”淘书会
4月16日,莒县第六实验小学校园内书香四溢、笑语盈盈,以“阅读世界 丰盈自我”为主题的第二十四届读书节之“淘书会”活动火热开启。全校师生齐聚一堂,以书会友、共享阅读之乐,为春日校园增添了一抹浓厚的文化气息。 活动在悠扬的诵…...
国产数据库与Oracle数据库事务差异分析
数据库中的ACID是事务的基本特性,而在Oracle等数据库迁移到国产数据库国产中,可能因为不同数据库事务处理机制的不同,在迁移后的业务逻辑处理上存在差异。本文简要介绍了事务的ACID属性、事务的隔离级别、回滚机制和超时机制,并总…...
C++学习记录:
今天我们来学习一门新的语言,也是C语言最著名的一个分支语言:C。 在C的学习中,我们主要学习的三大组成部分:语法、STL、数据结构。 C的介绍 C的历史可追溯至1979年,当时贝尔实验室的本贾尼斯特劳斯特卢普博士在面对复杂…...
等离子体浸没离子注入(PIII)
一、PIII 是什么?基本原理和工艺 想象一下,你有一块金属或者硅片(就是做芯片的那种材料),你想给它的表面“升级”,让它变得更硬、更耐磨,或者有其他特殊功能。怎么做呢?PIII 就像是用…...
LeetCode-16.最接近的三数之和 C++实现
一 题目描述 给你一个长度为 n 的整数数组 nums 和 一个目标值 target。请你从 nums 中选出三个整数,使它们的和与 target 最接近。 返回这三个数的和。 假定每组输入只存在恰好一个解 示例 1: 输入:nums [-1,2,1,-4], target 1 输出&…...
【机器学习】每日一讲-朴素贝叶斯公式
文章目录 **一、朴素贝叶斯公式详解****1. 贝叶斯定理基础****2. 从贝叶斯定理到分类任务****3. 特征独立性假设****4. 条件概率的估计** **二、在AI领域的作用****1. 文本分类与自然语言处理(NLP)****2. 推荐系统****3. 医疗与生物信息学****4. 实时监控…...
C 语言中的 volatile 关键字
1、概念 volatile 是 C/C 语言中的一个类型修饰符,用于告知编译器:该变量的值可能会在程序控制流之外被意外修改(如硬件寄存器、多线程共享变量或信号处理函数等),因此编译器不应对其进行激进的优化(如缓存…...
Python自学第1天:变量,打印,类型转化
突然想学Python了。经过Deepseek的推荐,下载了一个Python3.12安装。安装过程请自行搜索。 乖乖从最基础的学起来,废话不说了,上链接,呃,打错了,上知识点。 变量的定义 # 定义一个整数类型的变量 age 10#…...
探索鸿蒙应用开发:ArkTS应用执行入口揭秘
# 探索鸿蒙应用开发:ArkTS应用执行入口揭秘 在鸿蒙应用开发的领域中,ArkTS作为声明式开发语言,为开发者们带来了便捷与高效。对于刚接触鸿蒙开发的小伙伴来说,搞清楚ArkTS应用程序的执行入口是迈向成功开发的关键一步。今天&…...
idea中提高编译速度研究
探索过程: 有三种情况: 第一种: idea中用eclipse编译器编译springboot项目,然后debug启动Application报错找不到类。 有待继续研究。 第二种: idea中用javac编译器编译springboot项目,重新构建用时&a…...
静态链接part2
编译 语义分析 由语义分析器完成,这个步骤只是完成了对表达式的语法层面的分析,它并不了解这个语句是否真的有意义(例如在C语言中两个指针做乘法运算,这个语句在语法上是合法的,但是没有什么意义;还有同样…...
Vue3+Vite+TypeScript+Element Plus开发-17.Tags-组件构建
系列文档目录 Vue3ViteTypeScript安装 Element Plus安装与配置 主页设计与router配置 静态菜单设计 Pinia引入 Header响应式菜单缩展 Mockjs引用与Axios封装 登录设计 登录成功跳转主页 多用户动态加载菜单 Pinia持久化 动态路由 -动态增加路由 动态路由-动态删除…...
MATLAB R2023b如何切换到UTF-8编码,解决乱码问题
网上都是抄来抄去,很少有动脑子的,里面说的方法都差不多,但是在R2023b上怎么试都不管用,所以静下心来分析了下,我的 ...\MATLAB\R2016b\bin\lcdata.xml 里面除了注释几乎是空的,如果这样就能用为什么要加…...
3D语义地图中的全局路径规划!iPPD:基于3D语义地图的指令引导路径规划视觉语言导航
作者: Zehao Wang, Mingxiao Li, Minye Wu, Marie-Francine Moens, Tinne Tuytelaars 单位:鲁汶大学电气工程系,鲁汶大学计算机科学系 论文标题: Instruction-guided path planning with 3D semantic maps for vision-language …...
ShellScript脚本编程
语法基础 脚本结构 我们先从这个小demo程序来窥探一下我们shell脚本的程序结构 #!/bin/bash# 注释信息echo_str"hello world"test(){echo $echo_str }test echo_str 首先我们可以通过文本编辑器(在这里我们使用linux自带文本编辑神器vim),新建一个文件…...
【HarmonyOS 5】敏感信息本地存储详解
【HarmonyOS 5】敏感信息本地存储详解 前言 鸿蒙其实自身已经通过多层次的安全机制,确保用户敏感信息本地存储安全。不过再此基础上,用户敏感信息一般三方应用还需要再进行加密存储。 本文章会从鸿蒙自身的安全机制进行展开,最后再说明本地…...
大厂面试:六大排序
前言 本篇博客集中了冒泡,选择,二分插入,快排,归并,堆排,六大排序算法 如果觉得对你有帮助,可以点点关注,点点赞,谢谢你! 1.冒泡排序 //冒泡排序ÿ…...
.exe变成Windows服务
.exe变成Windows服务) 场景步骤 1: 安装 PyInstaller和win32serviceutil步骤 2: 使用 PyInstaller 创建 .exe 文件步骤 3: 检查生成的 .exe 文件步骤 4: 安装服务步骤 5: 启动服务步骤 6: 配置服务自动启动(可选)步骤 7: 检查服务状态完整示例…...
探索鸿蒙沉浸式:打造无界交互体验
一、鸿蒙沉浸式简介 在鸿蒙系统中,沉浸式是一种极具特色的设计理念,它致力于让用户在使用应用时能够全身心投入到内容本身,而尽可能减少被系统界面元素的干扰。通常来说,就是将应用的内容区巧妙地延伸到状态栏和导航栏所在的界面…...
el-tree组件使用过滤时,不展示筛选目标的子节点
1.el官方示例过滤方法 const filterNode (value: string, data: Tree) > {if (!value) return truereturn data.label.includes(value) }2.修改后的过滤方法 /*** 树节点过滤*/ const filterNode (value, data, node) > {if (!value) return true;let parentNode no…...
超详细!Android 面试题大汇总与深度解析
一、Java 与 Kotlin 基础 1. Java 的多态是如何实现的? 多态是指在 Java 中,同一个行为具有多个不同表现形式或形态的能力。它主要通过方法重载(Overloading)和方法重写(Overriding)来实现。 方法重载&a…...
网站301搬家后谷歌一直不收录新页面怎么办?
当网站因更换域名或架构调整启用301重定向后,许多站长发现谷歌迟迟不收录新页面,甚至流量大幅下滑。 例如,301跳转设置错误可能导致权重传递失效,而新站内容与原站高度重复则可能被谷歌判定为“低价值页面”。 即使技术层面无误&a…...
在Mac上离线安装k3s
目录 首先是安装multipass。 1. 系统要求 2. 环境准备 本来想照着网上文档学习安装一下k3s,没想到在docker被封了之后,现在想通过命令行去下载github的资源也不行了(如果有网友看到这个文档、并且知道问题原因的,请留言告知&am…...
