《汇编语言程序设计》端口输入输出与外设编程

上传人:宝路 文档编号:48104169 上传时间:2018-07-09 格式:PPT 页数:44 大小:1.42MB
返回 下载 相关 举报
《汇编语言程序设计》端口输入输出与外设编程_第1页
第1页 / 共44页
《汇编语言程序设计》端口输入输出与外设编程_第2页
第2页 / 共44页
《汇编语言程序设计》端口输入输出与外设编程_第3页
第3页 / 共44页
《汇编语言程序设计》端口输入输出与外设编程_第4页
第4页 / 共44页
《汇编语言程序设计》端口输入输出与外设编程_第5页
第5页 / 共44页
点击查看更多>>
资源描述

《《汇编语言程序设计》端口输入输出与外设编程》由会员分享,可在线阅读,更多相关《《汇编语言程序设计》端口输入输出与外设编程(44页珍藏版)》请在金锄头文库上搜索。

1、- 朱耀庭汇编语言程序设计汇编语言程序设计-朱耀庭朱耀庭 第14章 端口输入输出与外设编程v 到目前为止,大部分编程工作都是针对CPU和内存的。但 实际情况是除CPU和内存外,主机周围有很多外部设备, 如键盘、鼠标、打印机、串口、USB等。这些设备都有其 独立的芯片,有些芯片也是微处理器,CPU可以通过端口 对其编程,实现对它们的控制和协调各部分的工作。在 DOS环境下,这些工作是由初始化程序或DOS内部程序通 过BIOS程序去进行的,用户只能通过DOS或BIOS的功能 调用间接进行干预。 v 本章将介绍如何通过端口直接对外设进行编程,使其完成 要求的工作。内容涉及外设和其相应端口的概念、端口

2、编 址及其访问方式,同时还将介绍一些典型芯片的编程。第14章 端口输入输出与外设编程v 输入/输出有以下几个层次,应用程序级、语言级、DOS 级、BIOS级和端口级。 v 应用程序级的输入/输出是指用各种工具开发的应用程序的 输入/输出,语言级是指各种语言的输入/输出语句,DOS 或BIOS级是指通过DOS或BIOS功能调用实现的输入/输出 ,而最底层则是端口的输入/输出。 v 本章就是要解决最后一级,也就是计算机最底层的输入/输 出问题。第14章 端口输入输出与外设编程14.4 综合实例14.3 其他芯片编程14.2 8259A、8253、8255典型芯片编程14.1 端口14.1 端口v

3、进行端口编程前,必须了解外设和CPU是如何连接在一起 的。如图14-1所示,CPU与外部设备(例如鼠标、键盘等 )的通讯,是通过I/O接口芯片来完成的。一个I/O外部设 备的接口芯片,根据其复杂程度可能对应数量不等的多个 端口。 v 在这些端口中,通常有命令口、输入口和输出口。命令口 接受来自CPU的命令,输入口、输出口分别向CPU发送和 接收信息。通常在非直接数据存取方式下,计算机内存的 信息只能够通过CPU内部的累加器AL或AX与外部设备的 端口进行信息交换。CPU通过I/O设备的命令口对该I/O设 备进行编程,告诉它用什么方式工作,CPU通过该设备的 输入/输出端口与其进行信息交换。表1

4、4-1给出了不同外部 设备所对应的端口。14.1 端口图14-1 CPU与外设连接示意图表14-1 I/O端口地址分配表演示动画14.1 端口主机CPU对外部设备工作的控制指挥方式 1I/O端口编址和寻址 21.主机CPU对外部设备工作的控制指挥方式v 80X86具有简单而又灵活的端口输入/输出方式。 v 在第6章提到的IN/OUT指令就是直接对端口进行输入/输出操作指令。 (1) DMA方式(直接存储器访问) v 系统板以8237DMA控制器芯片提供DMA机构,主要用于存储器刷新 等。该芯片有4个DMA通道,可编程实现4个独立的DMA操作。这种 方式往往用于内存和外部设备的成批数据交换,它和

5、系统硬件相关, 不属于本课程的讨论范围。由于其繁杂性,详细情况请查阅 8237DMA之Intel产品说明书。 v 在DMA方式下,不必经过累加器(AX或AL)就可以完成内存和外设 的直接数据交换。即使如此,主机CPU对它的控制也是经由端口对其 编程来实现的。1.主机CPU对外部设备工作的控制指挥方式(2) 其他方式(查询和中断方式) v 查询方式,I/O设备接口电路中有工作状态忙,闲,及缓冲器满、 空等状态,CPU通过AL(或AX),进而通过端口对这些状态不断地进 行查询,以完成对设备的指挥和数据交换工作。 v 中断方式,CPU不必定时查询I/O设备的状态,而是通过AL(或AX)进 而通过端口

6、直接下达命令和工作方式(即对外设编程),一旦I/O芯片接 收了该信息,则由I/O接口芯片来控制相应设备的I/O,只是在工作完 成或是遇到紧急情况(特殊条件产生)时才通过发中断信号的方式,请 求CPU干预。CPU相应中断后,根据情况再通过I/O端口进行数据读 写或发布新的命令。2. I/O端口编址和寻址 v I/O端口编址有两种方式:统一编址和独立编址 v 统一编址也称为存储器映像编址,这种方式是从存储器空 间划出一部分空间给I/O设备,把I/O端口当作内存来对待, 使用与访问内存同样的指令来访问。Motorola系列、 Apple系列、部分小型机就是采用这种方式。这种方式的 优点是访问内存的指

7、令均可用于访问I/O端口,处理数据能 力强、灵活,并且I/O 可有较大编址空间,易扩展等。缺 点是I/O端口占用了一部分内存空间,使存储器容量减小, I/O指令较长,执行速度较慢等。2. I/O端口编址和寻址 v 独立编址也称为I/O映像编址,外设的端口不占用内存空间 v 采用这种编址方式对I/O端口操作需要采用专门的输入/输 出指令 v 如80X86系列和Z-80系列计算机都采用这种方式 v 这种方式的优点是不占用内存空间、指令独立、I/O操作和 存储器操作容易区分,缺点是访问端口的方法不如访问存 储器的方法多,且I/O空间不易扩展等2. I/O端口编址和寻址 v Intel的X86微处理器

8、都支持I/O独立编址,有单独的I/O指 令(IN/OUT等),使用低16位地址表示I/O端口地址,16位 处理器支持字节型和字型I/O操作,32位处理器还支持双 字型I/O操作。相邻的字节型8位端口,可以组成一个字型 16位端口,相邻的16位端口可以组成一个双字型32位端口 。X86系列的微处理器最多支持64k(065535)个字节型的 端口。表14-1给出了IBM-PC的I/O端口地址分配表。 v Intel X86系列微处理器不能用mov,push,pop等内存读 写指令对端口操作,端口读写的基本指令只有两条:in和 out。端口指令寻址有两种方式:直接寻址和间接寻址。 关于端口直接寻址和

9、间接寻址的方法,在6.7节已经有详细 说明。14.2 8259A、8253、8255典型芯片编程v 外设通过接口芯片和CPU交互,接口芯片内部有若干寄存 器,CPU通过端口对这些寄存器进行访问 v I/O芯片编程的过程,实际上就是通过端口对其内部寄存器 进行设置的过程,一旦设置完毕,这些芯片就能按要求工 作 v 本节的重点是介绍一些典型芯片的编程方法 14.2 8259A、8253、8255典型芯片编程8259A芯片编程 8255编程 14.2.114.2.214.2.38253编程 14.2.1 8259A芯片编程v 8259A可编程中断控制器是专门用于系统中断管理的大规 模集成电路芯片,图

10、14-2是其内部结构图。 v CPU通过对8259A送4个初始化命令字以及3个操作字来完 成对8259A的初始化,这一工作通常是在系统启动时由初 始化程序完成的。一旦初始化完成,工作过程中一般不再 改变。 v 8259A提供了两个端口,但有多个命令字,因此命令字按 一定顺序进行设置。系统运行过程中,可随时通过写入命 令操作字来改变8259A的某些功能。图14-2 8259内部结构图 14.2.1 8259A芯片编程v 8259A提供两个端口,即20H和21H,其中20H端口为命 令口。如图14-3所示,通过20H端口CPU可以向8259A发 出命令,比如中断结束等。21H端口对应中断屏蔽寄存器

11、 (IMR),通过它可以屏蔽所要屏蔽的一些中断,如图14- 4所示。一片8259A能够接受8个独立的硬件中断信号,编 号为IRQ0IRQ7,号数小的级别最高。微机中BIOS在系 统初始化时已对其编程,并且使其分别对应中断类型08H 0FH。其中IRQ0IRQ7引脚与中断源的对应关系如表14 -2所示。用户通过写端口21H可以设置对应编号的中断信 号的屏蔽位 图14-3 中断结束和优先级循环控制字图14-4 中断屏蔽寄存器14.2.1 8259A芯片编程表14-2 中断向量表 中断号 功能 中断向量号中断向量地址 主8259A IRQ0 日时钟/计数器008H 0020H0023H 主8259A

12、 IRQ1 键盘 09H 0024H0027H 主8259A IRQ2 接从片8259A 0AH 0028H002BH 主8259A IRQ3 串行口2 0BH 002CH002FH 主8259A IRQ4 串行口1 0CH 0030H0033H 主8259A IRQ5 并行口2 0DH 0034H0037H 主8259A IRQ6 软盘 0EH 0038H003BH 主8259A IRQ7 并行口1 0FH 003CH003FH 14.2.1 8259A芯片编程v 如图14-5所示,来自8259的中断是否被响应取决于标志寄 存器FLAG中的中断标志位IF,当该位为1时,称作开中断 。在开中断

13、状态,即IF1,CPU允许响应任何非屏蔽中 断;当该位为0时,即关中断状态,CPU不允许相应来自 8259的所有硬件中断。 v 需要注意的是,在进入中断处理例行程序时,计算机会自 动关中断(置IF为0)。因此在编写中断处理程序时,一 旦允许响应硬件中断,就应在中断处理程序中使用STI指 令开中断,必要时再使用CLI指令关中断。图14-5 CPU响应中断14.2.1 8259A芯片编程v 中断处理应遵循如下原则:在关中断状态保护现场在关中断状态屏蔽低级中断开中断后进行中断处理向中断命令寄存器发中断结束命令在关中断状态恢复现场开中断后返回 v 编写8259A的中断处理程序时,如果要设置屏蔽字,例如

14、 ,禁止除键盘以外的所有设备发出来的中断请求,则可以 通过向21H端口送0FDH的方法来实现:MOV AL,0FDHOUT 21H,AL14.2.1 8259A芯片编程v 编写8259的中断处理程序与编写软中断处理程序不同,必 须参与中断服务程序结束时的信号发送工作。 v 即在中断处理程序结束前,也就是IRET之前,必须向 8259发出“中断结束”的EOI命令给8259的中断命令寄存器 ,表示该硬件中断处理已经完毕。 v 这一命令的代码是20H,而中断命令寄存器的端口号是 20H,所以这段程序应写为:MOV AL,20HOUT 20H,AL v 下面用一个例子来说明如何对21H端口编程: 14

15、.2.1 8259A芯片编程v 例14-1:屏蔽键盘中断例 v 题目:测试屏蔽并关闭键盘中断 v 设计思路:通过向21H端口发送屏蔽字2H实现 例14-1:屏蔽键盘中断例v 程序说明:程序运行后,键盘不能使用,该程序慎用, 最好在虚拟机上调试 14.2.2 8255编程v 图14-6是8255的内部结构图 v 8255用于系统板配置,它支持多种设备和信号,如键盘、 扬声器、配置开关和若干其他信号 v 该片对应4个I/O口。其中61H为输出端口PB,60H和62H 是两个输入端口,分别称为PA和PC端口,63H对应单字 节的命令寄存器 v 图14-7是端口分配图图 14-6 8255内部结构图图

16、14-7 8255端口分配图1图14-7 8255端口分配图214.2.2 8255编程v PC机加电后,BIOS发送99H给63H端口将该芯片初始化 。可利用PB端口给定位置置1的方法选择PA和PC端口交 替输入。利用PB口可读到曾写入PB口的当前值。下面分 别介绍PA,PB和PC端口。 v PA口:当PB口位7=0时,从PA口输入的是键盘扫描码。 当PB口位7=1时,从PA口输入的是由系统开关1,2反映 的系统配置状态。其中位76表示开关1的87位,它指 明了驱动器个数。其中位54,表示开关1的65位,指 明了显示器的类型。其中位32对应开关1的43,表示 系统板上的RAM数。第1位未用。第0位对应开关1的位1 表示非磁盘系统。14.2.2 8255编程v PB口:位02为1分

展开阅读全文
相关资源
相关搜索

当前位置:首页 > 中学教育 > 教学课件

电脑版 |金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号