8086 汇编学习 Part 9

端口的读写

CPU 的邻居

  1. CPU 内部的寄存器
  2. 内存单元
  3. 端口(各种接口卡、网卡,显卡,主板上的接口芯片等)
  • 各种芯片工作时,都有一些寄存器由 CPU 读写
  • 从 CPU 角度,将各寄存器当端口,并统一编制
  • CPU 用统一的方法与各种设备通信
    屏幕截图 2024 05 03 230106

读写端口的指令

  • 在对 [ 0 , 255 ] [0,255] [0,255] 的端口进行读写时,端口号用立即数给出
  • 在对 [ 256 , 65535 ] [256,65535] [256,65535] 的端口进行读写时,端口号放在 DX 中
  • IN 和 OUT 指令中,只能用 AX 或 AL 来存放从端口中读入的数据或要发送到端口的数据。
  • 访问 8 位端口时用 AL ,访问 16 位端口时用 AX

I/O 端口分配

屏幕截图 2024 05 03 230951

IN

功能

CPU 从端口读取数据

格式

IN 数据 , 端口号

执行时与总线相关的操作
  1. CPU 通过地址线将地址信息发出
  2. CPU 通过控制线发出端口读命令,并选中端口所在的芯片,并通知要从中读取数据
  3. 端口所在的芯片将对应端口中的数据通过数据总线送入 CPU

OUT

功能

CPU 往端口写入数据

格式

OUT 端口号 , 数据

CMOS RAM 芯片关于端口读写的操作

CMOS RAM 芯片

  1. 包含一个实时钟和一个有 128 个存储单元的 RAM 存储器
  2. 128 个字节的 RAM 中存储:内部实时钟、系统配置信息、相关的程序(用于开机时配置系统信息)
  3. CMOS RAM 芯片靠电池供电,关机后其内部的实时钟仍可正常工作,RAM 中的信息不丢失
  4. 该芯片内部有两个端口,端口地址为 70H 和 71H,CPU 通过这两个端口读写 CMOS RAM
  5. 70H 地址端口,存放要访问的 CMOS RAM 单元的地址
  6. 71H 数据端口,存放从选定的单元中读取的数据,或要写入到其中的数据
  7. 读取 CMOS RAM 要先将要读取的单元地址送入 70H 地址端口,再从数据端口 71H 读出指定单元的内容

CMOS RAM 中存储的时间信息

内容
地址00010203040506070809
  • 当前时间在 CMOS RAM 中用 6 个字节存放,用 BCD 码存放
  • 6 个信息的长度都为 1 个字节

外设的连接与中断

CPU 在执行指令过程中,可以检测到发送过来的中断信息,引发中断过程,处理外设的输入。

外中断 :由外部设备发生的事件引起的中断

  • 几乎所有由外设引发的外中断,都是可屏蔽中断
  • 不可屏蔽中断在系统中有必须处理的紧急情况发生时用来 CPU 的中断信息

可屏蔽中断

  • 可屏蔽中断时 CPU 可以不响应的外中断
  • CPU 是否响应可屏蔽中断,要看标志寄存器 IF 位的设置
  • 当 CPU 检测到可屏蔽中断信息时,如果 IF = 1,则 CPU 在执行完当前指令后响应中断,引发中断过程;如果 IF = 0,则不影响可屏蔽中断。

不可屏蔽中断

  • 不可屏蔽中断是 CPU 必须响应的外中断
  • 当 CPU 检测到不可屏蔽中断信息时,则在执行完当前指令后,立即响应,引发中断过程
  • 对于 8086 CPU 不可屏蔽中断的中断类型码固定为 2

外中断处理过程

可屏蔽中断所引发的中断过程
  1. 取中断类型码(可屏蔽中断信息来自于 CPU 外部,中断类型码通过数据总线送入 CPU)
  2. 标志寄存器入栈,IF = 0 , TF = 0(将 IF 置 0 的原因是 :进入中断处理程序后,禁止其他的可屏蔽中断,如果在中断处理程序中需要处理可屏蔽中断,可以用指令将 IF 置 1)
  3. CS 和 IP 入栈
  4. ( I P ) = ( 中断类型码 × 4 ) (IP) = (中断类型码 \times 4) (IP)=(中断类型码×4) ( C S ) = ( 中断类型码 × 4 ) (CS) = (中断类型码 \times 4) (CS)=(中断类型码×4)
不可屏蔽中断的中断过程(不必取中断码,固定为2)
  1. 标志寄存器入栈,IF = 0,TF = 0
  2. CS 和 IP 入栈
  3. (IP) = (8) ,(CS) = (0AH)

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

开源im即时通讯app源码系统/php即时聊天im源码/php+uniapp框架【终身使用】

摘要 随着开源文化的蓬勃发展,即时通讯(IM)系统作为现代通信不可或缺的一部分,其开源实现正变得越来越普遍。本文将深入探讨基于PHP的全开源即时通讯源码系统,并结合UniApp开源框架,从理论基础到代码实现,再到实际应用…

探索设计模式的魅力:分布式模式让业务更高效、更安全、更稳定

​🌈 个人主页:danci_ 🔥 系列专栏:《设计模式》 💪🏻 制定明确可量化的目标,坚持默默的做事。 ✨欢迎加入探索分布式模式之旅✨ 在数字化时代,企业面临着前所未有的挑战和机遇。…

机器学习-K近邻算法(KNN)

目录 什么是KNN算法 图解KNN基本算法 (1)k近邻算法中k的选取 (2)距离函数 (3)归一化处理 (4)概率kNN KNN算法的优缺点 优势 缺点 KNN算法总结 什么是KNN算法 k近邻算法&…

vs 2022 Xamarin 生成 Android apk

再保存,如果没有生成apk就重启软件 再试一次

(论文阅读-优化器)Volcano-An Extensible and Parallel Query Evaluation System

目录 摘要 一、简介 三、火山模型系统设计 3.1 文件系统 3.2 查询处理 四、扩展性 五、动态查询评估计划 六、多处理器查询评估 6.1 垂直并行化 6.2 水平并行化Horizontal 6.3 exchange operator的变体 6.4 文件系统修改 七、总结 摘要 火山模型Volcano在数据库查…

详解LLMOps,将DevOps用于大语言模型开发

大家好,在机器学习领域,随着技术的不断发展,将大型语言模型(LLMs)集成到商业产品中已成为一种趋势,同时也带来了许多挑战。为了有效应对这些挑战,数据科学家们转向了一种新型的DevOps实践LLM-OP…

Maven 在项目的 pom.xml 文件中 指定 阿里云的景象仓库

配置 在 项目的 pom.xml 文件中添加如下配置即可 <?xml version"1.0" encoding"UTF-8"?> <project xmlns"http://maven.apache.org/POM/4.0.0" xmlns:xsi"http://www.w3.org/2001/XMLSchema-instance"xsi:schemaLocation&…

Android NDK开发——Android Studio 3.5.2安装与配置踩坑

Android NDK开发——Android Studio 3.5.2安装与配置踩坑 一、Android Studio下载二、配置踩坑报错1&#xff1a;Failed to install the following Android SDK packages as some licences have not been accepted报错2&#xff1a;No toolchains found in the NDK toolchains …

如何修复连接失败出现的错误651?这里提供修复方法

错误651消息在Windows 7到Windows 11上很常见&#xff0c;通常会出现在一个小的弹出窗口中。实际文本略有不同&#xff0c;具体取决于连接问题的原因&#xff0c;但始终包括文本“错误651”。 虽然很烦人&#xff0c;但错误651是一个相对较小的问题&#xff0c;不应该导致计算…

UI组件库和内容文字的中英文切换

同时实现UI组件库(这里以ElementPlus为例)和内容文字的中英文切换 1. 安装vueI18n和element-plus pnpm i vue-i18n element-plus 2. 然后在项目中src目录下新建lang文件夹&#xff0c;里面新建en.ts和zh.ts还有index.ts index.ts import { createI18n } from vue-i18n impor…

【Android】Android应用性能优化总结

AndroidApp应用性能优化总结 最近大半年的时间里&#xff0c;大部分投在了某国内新能源汽车的某款AndroidApp开发上。 由于该App是该款车上&#xff0c;常用重点应用。所以车厂对应用性能的要求比较高。 主要包括&#xff1a; 应用冷启动达到***ms。应用热(温)启动达到***ms应…

【备战软考(嵌入式系统设计师)】07 - 计算机网络模型

七层模型 计算机网络中比较常见的有OSI七层模型和TCP/IP四层模型。 软考中主要考七层模型&#xff0c;但是实际中使用的还是四层模型比较多&#xff0c;我们主要是为了考试&#xff0c;那就主要讲讲七层模型。不过实际上四层模型就是将七层模型压缩了三层&#xff0c;本质上是…

Nginx(参数设置总结)

文章目录 Nginx&#xff08;工作机制&参数设置&#xff09;1.Master&Worker工作机制1.示意图2.解释3.Nginx争抢机制4.accept_mutex解决惊群现象5.多进程结构不用多线程结构的好处6.IO多路复用&#xff0c;实现高并发7.优势 2.参数配置1.work_processes1.基本介绍2.work…

杭电acm2018 母牛的故事 Java解法 经典递归

标准递归题 先模拟 接着找递归出口 再找递归通式 想想看 今天的母牛等于前一天的母牛数加上今天出生的母牛 而三天前的母牛所有母牛都能生一头 import java.util.Scanner;public class Main {public static void main(String[] args) {Scanner scnew Scanner(System.in);l…

交互中的“互”难以产生的原因

脑机交互技术的目标是通过分析和解读大脑活动&#xff0c;将其与特定的意图、指令或行为连接起来。通过训练和分析&#xff0c;可以建立起大脑活动与特定行为或意图之间的关联模型&#xff0c;从而实现脑机交互的应用&#xff0c;例如控制外部设备、传递信息等。然而&#xff0…

unaipp推荐算法的汽车租赁系统zaxzu 微信小程序hbuiderx

随着现代汽车租赁管理的快速发展&#xff0c;可以说汽车租赁管理已经逐渐成为现代汽车租赁管理过程中最为重要的部分之一。但是一直以来我国传统的汽车租赁管理并没有建立一套完善的行之有效的汽车租赁管理系统&#xff0c;传统的汽车租赁管理已经无法适应高速发展&#xff0c;…

Django中如何让页面之间建立关系

今天给大家讲解两种让页面建立联系的方式 一、重定向 二、表单提交 先看第一种方式&#xff0c;重定向 首先需要了解客户端发起请求的过程 1、客户端向服务端发起请求,比如请求地址是&#xff1a;http://127.0.0.1:8000/lili/submit/ 2、程序根据路由找到视图函数 3、执行视…

从一到无穷大 #26 Velox:Meta用cpp实现的大一统模块化执行引擎

本作品采用知识共享署名-非商业性使用-相同方式共享 4.0 国际许可协议进行许可。 本作品 (李兆龙 博文, 由 李兆龙 创作)&#xff0c;由 李兆龙 确认&#xff0c;转载请注明版权。 文章目录 引言业务案例PrestoSparkXStreamDistributed messaging systemData IngestionData Pr…

ES集群数据备份与迁移

提示&#xff1a;文章写完后&#xff0c;目录可以自动生成&#xff0c;如何生成可参考右边的帮助文档 文章目录 前言一、文章涉及概念讲解二、操作步骤1.创建 snapshot repository操作主机hadoop1分别操作从机hadoop2和hadoop3 2. 查看仓库信息3. 备份索引&#xff0c;生成快照…

电商中文场景多模态测试prompt

魔搭社区汇聚各领域最先进的机器学习模型&#xff0c;提供模型探索体验、推理、训练、部署和应用的一站式服务。https://www.modelscope.cn/datasets 多模态大模型Yi-VL-plus体验 效果很棒 - 知乎最近测了一下零一万物的多模态大模型Yi-VL-plus的效果&#xff0c;发现多模态理解…