《微机接口原理》A+学习笔记系列--概论&端口寻址

一.I/O控制方式概述

(一).课程地位与编程层级

        《微机接口原理》是cs/ee专业的一门重要基础核心课程,该课程中涉及的计算机体系结构层次是软件层与硬件层的交界面,抽象层级高的语言是“面向对象编程”,类比固件编程就是“面向硬件编程”。从这个角度出发,不懂硬件就没办法编程设计。所以说接口编程是具象编程,没有抽象层级高的概念。

        本课程是《计算机组成原理》、《汇编语言程序设计》的进阶课,为后续理解《计算机操作系统原理》的I/O控制打下底层基础。

(二).I/O控制方式与基本概念

在《计算机组成原理》中,讨论过接口的基本定义:(不是软件接口API,是硬件接口部件)


接口是介于总线与外设之间,与外设互联的标准化逻辑部件。


此外,对标准化总线也有总线接口,在本课程中不详细讨论。

接口逻辑功能主要有:

1.完成处理器指令

2.返回外设状态

3.数模转换

4.数据交互于缓存

5.设备片选

接口的功能决定了其硬件总是存在面向处理器、面向外设两个方向的管脚

 如上图intel 8255A,其左侧管脚面向8086处理器,右侧管脚面向外设。


        在《计算机组成原理》中,讨论过几种基本I/O控制方式如下所示:其中轮询方式和中断方式主要由软件实现:

轮询方式为“应答”逻辑,处理机循环等待外设输入,直至其有效输入时,退出循环。

中断方式为“程序切换”,处理机在无中断源时,按其主程序运行,响应中断时由中断隐指令(硬件)完成程序指针的切换和保存。中断子程序由软件编写

DMA(直接存储器访问)方式可以直接将数据直接通过总线送往主存,主要由DMAC(DMA控制器)进行控制。

通道方式由协处理器完成数据交互的控制,在微型计算机一般不使用,故在本课程中不详细讨论。

I/O控制核心由软件实现轮询方式(查询)微型计算机
中断方式
核心由硬件实现DMA方式
通道方式大型计算机

二.端口寻址

端口(port):计算机接口中可以由处理机直接访问的寄存器。

按其逻辑功能分为以下几类:

1.命令端口:接口芯片的工作方式可能多种多样,其命令字由CPU写入。

2.状态端口:寄存外设状态,CPU可以读取以获取其状态。

3.数据端口:数据缓存寄存器。

其中,每个端口有其唯一地址。


(一).端口编址方式

1.统一编址

将CPU寻址空间划分一部分给端口使用,内存地址和端口地址就不存在交集了,这样设计的目的是可以像访问内存单元一样访问端口。即使用MOV指令进行数据交互。

其优势是地址不重复,不用特殊的访问端口,对大型计算机很实用。

其缺陷是压缩了CPU的寻址空间,接口为了兼容传送指令,增加了地址译码电路

2.独立编址

目前个人PC微机均采用独立编址方式:接口芯片内的端口地址,与主存分开编址,会出现地址重复,故要使用不同的指令访问端口:

MOV 20H,ALOUT 20H,AL访问的分别是主存20H单元、接口芯片20H端口。

其优势是不占用主存地址

其缺陷是要使用专用I/O指令访问端口

(二).端口访问

1.I/O指令(intel 8086)

在访问端口的指令中,最常用的是reg型外设指令:在8086下,其助记符如下

IN     Reg    , PORT

OUT PORT , Reg

      IN指令是将数据从端口输入8086的寄存器,OUT指令则恰好相反。可以发现:所谓“in”、“out”是从处理器的角度出发命名的。


2.寻址方式

a.直接寻址

在指令中直接给出端口地址,对端口进行访问。

但是由于指令位长限制,IN、OUT指令直接地址只可以访问00H----FFH,即访问地址超过八位时,不可以使用直接寻址方式

b.间接寻址

将访问地址存入DX寄存器,对端口进行访问。

由于8086处理器中DX寄存器位长16位,故其寻址空间远远大于直接寻址范围。


3.地址选用原则

端口编址不可以出现冲突,系统设置的外部资源地址不可以使用、计算机厂家申明保留的地址不可以使用。在IBM体系结构下,用户原则上可以使用300H---31FH。

4.地址译码电路

a.全译码

将完整地址送入译码器用于译码

一般用于访问只有一个端口的接口芯片时使用,若一个接口芯片内有多个端口,接口芯片自身必然有选择线,采用全译码方式硬件过于冗余。

b.部分译码

只有高位地址参与译码,产生接口芯片使能信号,低位直接送入接口芯片

部分译码是最常用的端口寻址方式


如下图所示,A2--A4译码产生8255A使能信号 ~CS。

而A1、A0送入8255A,以选择其中的端口。

c.开关式译码

在部分译码的基础上,增加地址开关来改变端口地址,这一方式不常用。

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
第一章 微型计算机概述 本章前言 §1.1 微型计算机的特点和发展 §1.2 微处理器、微型计算机和微型计算机系统 1.2.1 微处理器 1.2.2 微型计算机系统 §1.3 微型计算机的应用 本章小结 第二章 8086微处理器 本章前言 §2.1 8086CPU的编程结构 2.1.1 8086CPU的编程结构 2.1.2 8086CPU的寄存器 §2.2 8086/8088CPU的引腿信号和工作模式 2.2.1 最小模式和最大模式 2.2.2 8086/8088最小模式下的引腿与典型配置 §2.3 8086的操作与时序 2.3.1 系统复位和启动操作 2.3.2 最小模式总线操作 2.3.3 断操作和断系统 2.3.4 最小模式下的总线保持操作 §2.4 8086/8088存储器组织与I/O组织 2.4.1 存储器的一般概念 2.4.2 地址和地址译码器 2.4.3 8086存储器的偶体存储器与奇体存储器 2.4.4 存储器分段、段地址与偏移地址 2.4.5 8086/8088的I/O组织 2.8.1 无类型编址 本章小结 第三章 8086的寻址方式和指令系统 本章前言 §3.1 8086的寻址方式 3.1.1 8086的寻址方式--立即寻址 3.1.2 8086的寻址方式--寄存器寻址 3.1.3 8086的寻址方式--直接寻址 3.1.4 8086的寻址方式--寄存器间接寻址 3.1.5 8086的寻址方式--寄存器相对寻址 3.1.6 8086的寻址方式--基址加变址寻址 3.1.7 8086的寻址方式--基址加变址相对寻址 3.1.8 8086的寻址方式--输入/输出端口寻址 §3.2 8086的指令系统 3.2.1 通用数据传送指令 3.2.2 累加器专用传送指令 3.2.3 地址传送指令 3.2.4 标志传送指令 3.2.5 算术运算指令--加法指令 3.2.6 算术运算指令--减法指令 3.2.7 算术运算指令--乘法指令 3.2.8 算术运算指令--除法指令 3.2.9 算术运算指令--BCD码运算指令 3.2.10 逻辑运算指令 3.2.11 移位指令 3.2.12 串操作指令 3.2.13 关于转移指令和调用指令的寻址方式 3.2.14 子程序调用和返回指令 3.2.15 转移指令 3.2.16 循环控制指令 3.2.17 断指令和断返回指令 3.2.18 处理器控制指令 §3.3 ASM-86汇编语言的标记、表达式和伪指令 3.3.1 汇编语言概述 3.3.2 ASM-86汇编语言的标记 3.3.3 汇编语言表达式--操作数和运算符 3.3.4 汇编语言表达式--综合运算符 3.3.5 指令性语句和指示性语句 3.3.6 标号赋值伪指令EQU 3.3.7 定义存储单元的伪指令 3.3.8 定义存储单元类型的伪指令 3.3.9 段定义伪指令 3.3.10 定义过程的伪指令 3.3.11 源程序结束伪指令 本章小结 第四章 微型计算机和外设的数据传输 本章前言 §4.1 为什么要用接口电路 4.1.1 为什么要用接口电路 4.1.2 16位系统与8位接口的连接 §4.2 CPU和外设之间的数据传送方式 4.2.1 程序传送方式 4.2.2 断传送方式 4.2.3 DMA传送方式 4.2.4 输人/输出过程提出的几个问题 本章小结 第五章 串并行通信和接口技术 本章前言 §5.1 串行通信与并行通信 5.1.1 串行通信与并行通信的概念 5.1.2 全双工、半双工和单工 5.1.3 同步通信和异步通信 5.1.4 串行通信的物理标准RS–232-C标准 §5.2 可编程串行通信接口8251A 5.2.1 8251A的性能 5.2.2 825lA的编程结构和工作原理 5.2.3 8251A的引腿 5.2.4 8251A的模式字、控制字和状态字 5.2.5 8251A的编程和应用举例 §5.3 并行接口和并行通信 §5.4 可编程并行通信接口8255A 5.4.1 8255A的性能及编程结构 5.4.2 8255A的芯片引腿信号 5.4.3 8255A的工作方式--方式0 5.4.4 8255A的工作方式--方式1 5.4.5 8255A的工作方式--方式2 5.4.6 8255A方式控制字 5.4.7 8255A的编程和应用举例 本章小结 第六章 断控制器、计数器/定时器 本章前言 §6.1 断控制器8259A 6.1.1 断控制器8259A的功能 6.1.2 8259A的编程结构和工作原理 6.1.3 8259A的工作方式 6.1.4 8259A初始化命令字 6.1.5 8259A的操作命令字 6.1.6 8259A编程举例 §6.2 计数器/定时器8253 6.2.1 可编程计数器/定时器的工作原理 6.2.2 8253编程结构和工作原理 6.2.3 8253引腿 6.2.4 8253控制字 6.2.5 8253工作模式 6.2.6 8253应用举例 本章小结

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

物质波波波

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值