8086 汇编学习 Part 9

本文详细讲述了8086处理器如何通过CPU与各种设备的I/O端口进行读写操作,包括IN和OUT指令的使用,以及CMOSRAM的读写机制。还介绍了可屏蔽中断和不可屏蔽中断的过程,强调了中断处理在系统中的重要性。
摘要由CSDN通过智能技术生成

端口的读写

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)
  • 26
    点赞
  • 9
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值