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)

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

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

相关文章

webservice和TCP类型接口测试

1.webservice类型接口 1.1.webservice类型接口介绍 Web服务(WebService)是一种基于网络的应用程序接口(API),可通过网络来进行通信和交互。它们使用标准化的协议和格式来进行通信,最常见的是使用XML&#…

Java设计模式-工厂

Java设计模式中,工厂模式主要包括普通工厂模式以及抽象工厂模式,普通工厂模式是用于制造输出不同类型的对象,抽象工厂模式是用于制造输出不同类型的普通工厂,本文主要描述工厂模式的基本用法。 如上所示,使用普通工厂模…

解锁电脑潜能,提高办公效率:这个桌面助手您可千万不能错过!

文章目录 📖 介绍 📖📝 你是否有这些烦恼?📝 一站式效率工具平台📝 插件市场:无限扩展的可能📝 如何开始使用🎯 结语 ⚓️ 相关链接 ⚓️ 📖 介绍 &#x1f4…

知乎广告推广开户流程全攻略及费用详解

知乎作为一个高质量的知识分享平台,具有大量高教育背景和购买力的用户群体,成为了众多品牌广告主心仪的目标营销阵地。想要在知乎上精准高效地推广产品或服务,首先需要了解其广告推广的开户流程与相关费用。 一、知乎广告开户流程 1、前期准…

ansible批量运维管理

Ansible是一种自动化运维工具,基于Python开发,主要用于自动化IT任务,如配置管理、应用程序部署、软件升级和系统管理等。它集合了众多运维工具(如puppet、cfengine、chef、func、fabric)的优点,实现了批量系…

AI终端设备的自动化分级

摘要: 大语言模型(LLM)被认为是通用人工智能(AGI)的潜在火花,为构建通用人工智能代理带来了希望。在此基础上,客户端设备在人工智能的帮助下不断发展,从基于应用程序(AP…

Centos 中如何汉化man命令

刚学Linux,记不住命令和选项,很依赖里面的 man 查看命令,但因为着实看不懂,有没有什么办法把man查看命令的信息改成中文 在CentOS 7中,你可以通过安装man-pages-zh包来获取中文的man手册。以下是具体的步骤&#xff1a…

stm32f103zet6_RTC_1_介绍

RTC简介 实时时钟是一个独立的定时器。 RTC模块拥有一组连续计数的计数器,在相应软件配置下,可 提供时钟日历的功能。 修改计数器的值可以重新设置系统当前的时间和日期。 RTC模块和时钟配置系统(RCC_BDCR寄存器)处于后备区域,即在系统复…

【Linux】常用基本指令

目录 食用说明 用户管理 whoami/who clear tree 目录结构和路径 pwd ls 文件 隐藏文件 常用选项 cd 家目录、根目录、绝对路径和相对路径 touch 常用选项 mkdir rmdir/rm man cp mv cat nano echo 输出重定向 > 输入重定向 < more/less head/…

ic基础|时钟篇02:关于时钟分频器的二三事

大家好&#xff0c;我是数字小熊饼干&#xff0c;一个练习时长两年半的ic打工人。我在两年前通过自学跨行社招加入了IC行业。现在我打算将这两年的工作经验和当初面试时最常问的一些问题进行总结&#xff0c;并通过汇总成文章的形式进行输出&#xff0c;相信无论你是在职的还是…

嵌入式开发八:STM32启动过程分析

本次给大家分析 STM32F4 的启动过程&#xff0c;这里的启动过程是指从 STM32 芯片上电复位执行的第一条指令开始&#xff0c;到执行用户编写的 main 函数这之间的过程。我们编写程序&#xff0c;基本都是用 C 语言编写&#xff0c;并且以 main 函数作为程序的入口。但是事实上&…

1.使用uniapp搭建微信小程序项目并引入前端组件资源

文章目录 1. 项目配置1.1. 新建vue3项目1.2. 关联云空间1.3. 运行到微信开发者工具 2. 前端组件2.1. uniCloud的内置组件和扩展组件2.2. uView3.02.3. 在uniapp项目引入uview3 1. 项目配置 1.1. 新建vue3项目 由于我们要使用vue3而不是vue2&#xff0c;所以要选好版本&#x…

【GPT调用】本地使用python调用GPT接口

python调用GPT接口 环境变量设置主调用方法执行结果 环境变量设置 .env文件中配置GPT环境变量 api_key"你的GPT-API-KEY" urlhttps://ai-proxy.ksord.com/wps.openai.azure.com/openai/deployments/gpt-4-32k/chat/completions?api-version2023-09-01-preview主调…

中国结(科普)

中国结是一种手工编织工艺品&#xff0c;它身上所显示的情致与智慧正是汉族古老文明中的一个侧面。 [1]它原本是由旧石器时代的缝衣打结&#xff0c;后推展至汉朝的仪礼记事&#xff0c;再演变成今日的装饰手艺。周朝人随身的佩戴玉常以中国结为装饰&#xff0c;而战国时代的铜…

1756jsp农产品销售管理系统Myeclipse开发mysql数据库C2C模式java编程计算机网页项目沙箱支付

一、源码特点 java 农产品销售管理系统 是一套完善的web设计系统&#xff0c;对理解JSP java编程开发语言有帮助&#xff0c;系统具有完整的源代码和数据库&#xff0c;系统采用web模式&#xff0c;系统主要采用B/S模式开发。开发环境为TOMCAT7.0,Myeclipse8.5开发&#xff0…

天龙怀旧游戏python脚本

设置图&#xff1a; 游戏窗口最大化。 海贼洞这里定位你要回点的定位。 运行bat就行&#xff0c;脚本出错了还是会重新运行脚本&#xff0c;运行自动启动&#xff0c;end暂停脚本&#xff0c;home重新启动脚本 1. 我常用的是内挂回点脚本&#xff0c; 下面都是前台脚本&…

Python-100-Days: Day09 Object-oriented programming(OOP) Upgrade

1.property装饰器 之前有讨论过&#xff0c; Python中属性和方法访问权限的问题&#xff0c;不建议将属性设置为私有的&#xff0c;倘若直接将属性暴露给外界也是存在问题的。例如&#xff0c;我们没有办法检查赋给属性的值是否有效。之前的建议是将属性命名以单下划线开头&am…

C#贪吃蛇

C#贪吃蛇 文章目录 Program.csText1Game.csISceneUpdate.csText2BeginScene.csBegionOrEndScene.csEndScene.csGameScene.csText3GameObject.csIDraw.csPosition.csText4Food.csSnakeBody.csWall.csText5Map.csText6Snake.csProgram.cs using 贪吃蛇.Text1;Game game = new Ga…

java语言数据结构(单链表)

前言 不得承认java应用的广泛&#xff0c;所以毅然决定java版本的数据结构和算法专题还是要坚决更新。每日更新2题&#xff0c;希望学习的小伙伴可以关注一波跟上&#xff0c;评论区欢迎讨论交流。 实现原理 节点&#xff08;Node&#xff09;&#xff1a;链表的基本构建单元…

ElementUI Select选择器多选获取选中对象

html <el-form-item label"账户标签&#xff1a;" prop"tags"><el-selectstyle"width: 500px"value-key"tagId"v-model"form.tags"clearablefilterablemultipleplaceholder"请搜索选择账户标签"><…