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

实验三 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

设计思路:

  1. 数据段定义(DATAS SEGMENT)

定义了三个字符串:mess1、mess2和mess3。这些字符串用于在屏幕上显示信息。

  1. 代码段定义(code segment)

程序的主体部分,包含了初始化数据段、显示消息、循环输出数据和延时的逻辑。

  1. 初始化数据段(MOV ax,DATAS / MOV ds,ax)

将数据段的地址加载到ax寄存器,然后将ax的值赋给ds寄存器,以便程序可以访问数据段中的数据。

  1. 显示消息(MOV ah,9 / MOV dx,offset mess1 / int 21h)

使用int 21h中断的功能9来显示字符串。首先设置ah为9,然后将字符串的偏移地址赋给dx,最后调用int 21h中断。

  1. 循环输出数据(AG:...)

程序的主要循环部分,通过两个指定的端口(outport1和outport2)输出数据,并在每次输出后调用延时子程序。

  1. 延时子程序(delay proc near)

一个简单的延时子程序,。

  1. 检测键盘输入(mov ah,1 / int 16h)

使用int 16h中断的功能1来检测键盘输入。如果没有键盘输入,程序将继续循环;如果有键盘输入,程序将结束。

  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. 公钥加密&#xff0…...

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&#xff1…...

在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:仅显示直接依赖&#xf…...

若依微服务版启动小程序后端

目录标题 本地启动,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.冒泡排序 //冒泡排序&#xff…...

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