汇编语言程序设计》第十四章:端口输入输出与外设编程ppt课件

上传人:优*** 文档编号:136920262 上传时间:2020-07-03 格式:PPT 页数:47 大小:1.47MB
返回 下载 相关 举报
汇编语言程序设计》第十四章:端口输入输出与外设编程ppt课件_第1页
第1页 / 共47页
汇编语言程序设计》第十四章:端口输入输出与外设编程ppt课件_第2页
第2页 / 共47页
汇编语言程序设计》第十四章:端口输入输出与外设编程ppt课件_第3页
第3页 / 共47页
汇编语言程序设计》第十四章:端口输入输出与外设编程ppt课件_第4页
第4页 / 共47页
汇编语言程序设计》第十四章:端口输入输出与外设编程ppt课件_第5页
第5页 / 共47页
点击查看更多>>
资源描述

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

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

2、的编程。,南开大学朱耀庭,第14章端口输入输出与外设编程,输入/输出有以下几个层次,应用程序级、语言级、DOS级、BIOS级和端口级。应用程序级的输入/输出是指用各种工具开发的应用程序的输入/输出,语言级是指各种语言的输入/输出语句,DOS或BIOS级是指通过DOS或BIOS功能调用实现的输入/输出,而最底层则是端口的输入/输出。本章就是要解决最后一级,也就是计算机最底层的输入/输出问题。,南开大学朱耀庭,第14章端口输入输出与外设编程,14.4综合实例,14.3其他芯片编程,14.28259A、8253、8255典型芯片编程,14.1端口,南开大学朱耀庭,14.1端口,进行端口编程前,必须了

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

4、朱耀庭,14.1端口,图14-1CPU与外设连接示意图,表14-1I/O端口地址分配表,演示动画,南开大学朱耀庭,14.1端口,南开大学朱耀庭,1.主机CPU对外部设备工作的控制指挥方式,80X86具有简单而又灵活的端口输入/输出方式。在第6章提到的IN/OUT指令就是直接对端口进行输入/输出操作指令。(1)DMA方式(直接存储器访问)系统板以8237DMA控制器芯片提供DMA机构,主要用于存储器刷新等。该芯片有4个DMA通道,可编程实现4个独立的DMA操作。这种方式往往用于内存和外部设备的成批数据交换,它和系统硬件相关,不属于本课程的讨论范围。由于其繁杂性,详细情况请查阅8237DMA之In

5、tel产品说明书。在DMA方式下,不必经过累加器(AX或AL)就可以完成内存和外设的直接数据交换。即使如此,主机CPU对它的控制也是经由端口对其编程来实现的。,南开大学朱耀庭,1.主机CPU对外部设备工作的控制指挥方式,(2)其他方式(查询和中断方式)查询方式,I/O设备接口电路中有工作状态忙,闲,及缓冲器满、空等状态,CPU通过AL(或AX),进而通过端口对这些状态不断地进行查询,以完成对设备的指挥和数据交换工作。中断方式,CPU不必定时查询I/O设备的状态,而是通过AL(或AX)进而通过端口直接下达命令和工作方式(即对外设编程),一旦I/O芯片接收了该信息,则由I/O接口芯片来控制相应设备

6、的I/O,只是在工作完成或是遇到紧急情况(特殊条件产生)时才通过发中断信号的方式,请求CPU干预。CPU相应中断后,根据情况再通过I/O端口进行数据读写或发布新的命令。,南开大学朱耀庭,2.I/O端口编址和寻址,I/O端口编址有两种方式:统一编址和独立编址统一编址也称为存储器映像编址,这种方式是从存储器空间划出一部分空间给I/O设备,把I/O端口当作内存来对待,使用与访问内存同样的指令来访问。Motorola系列、Apple系列、部分小型机就是采用这种方式。这种方式的优点是访问内存的指令均可用于访问I/O端口,处理数据能力强、灵活,并且I/O可有较大编址空间,易扩展等。缺点是I/O端口占用了一

7、部分内存空间,使存储器容量减小,I/O指令较长,执行速度较慢等。,南开大学朱耀庭,2.I/O端口编址和寻址,独立编址也称为I/O映像编址,外设的端口不占用内存空间采用这种编址方式对I/O端口操作需要采用专门的输入/输出指令如80X86系列和Z-80系列计算机都采用这种方式这种方式的优点是不占用内存空间、指令独立、I/O操作和存储器操作容易区分,缺点是访问端口的方法不如访问存储器的方法多,且I/O空间不易扩展等,南开大学朱耀庭,2.I/O端口编址和寻址,Intel的X86微处理器都支持I/O独立编址,有单独的I/O指令(IN/OUT等),使用低16位地址表示I/O端口地址,16位处理器支持字节型

8、和字型I/O操作,32位处理器还支持双字型I/O操作。相邻的字节型8位端口,可以组成一个字型16位端口,相邻的16位端口可以组成一个双字型32位端口。X86系列的微处理器最多支持64k(065535)个字节型的端口。表14-1给出了IBM-PC的I/O端口地址分配表。IntelX86系列微处理器不能用mov,push,pop等内存读写指令对端口操作,端口读写的基本指令只有两条:in和out。端口指令寻址有两种方式:直接寻址和间接寻址。关于端口直接寻址和间接寻址的方法,在6.7节已经有详细说明。,南开大学朱耀庭,14.28259A、8253、8255典型芯片编程,外设通过接口芯片和CPU交互,接

9、口芯片内部有若干寄存器,CPU通过端口对这些寄存器进行访问I/O芯片编程的过程,实际上就是通过端口对其内部寄存器进行设置的过程,一旦设置完毕,这些芯片就能按要求工作本节的重点是介绍一些典型芯片的编程方法,南开大学朱耀庭,14.28259A、8253、8255典型芯片编程,8259A芯片编程,8255编程,14.2.1,14.2.2,14.2.3,8253编程,南开大学朱耀庭,14.2.18259A芯片编程,8259A可编程中断控制器是专门用于系统中断管理的大规模集成电路芯片,图14-2是其内部结构图。CPU通过对8259A送4个初始化命令字以及3个操作字来完成对8259A的初始化,这一工作通常

10、是在系统启动时由初始化程序完成的。一旦初始化完成,工作过程中一般不再改变。8259A提供了两个端口,但有多个命令字,因此命令字按一定顺序进行设置。系统运行过程中,可随时通过写入命令操作字来改变8259A的某些功能。,图14-28259内部结构图,南开大学朱耀庭,14.2.18259A芯片编程,8259A提供两个端口,即20H和21H,其中20H端口为命令口。如图14-3所示,通过20H端口CPU可以向8259A发出命令,比如中断结束等。21H端口对应中断屏蔽寄存器(IMR),通过它可以屏蔽所要屏蔽的一些中断,如图14-4所示。一片8259A能够接受8个独立的硬件中断信号,编号为IRQ0IRQ7

11、,号数小的级别最高。微机中BIOS在系统初始化时已对其编程,并且使其分别对应中断类型08H0FH。其中IRQ0IRQ7引脚与中断源的对应关系如表14-2所示。用户通过写端口21H可以设置对应编号的中断信号的屏蔽位,图14-3中断结束和优先级循环控制字,图14-4中断屏蔽寄存器,南开大学朱耀庭,14.2.18259A芯片编程,表14-2中断向量表,南开大学朱耀庭,14.2.18259A芯片编程,如图14-5所示,来自8259的中断是否被响应取决于标志寄存器FLAG中的中断标志位IF,当该位为1时,称作开中断。在开中断状态,即IF1,CPU允许响应任何非屏蔽中断;当该位为0时,即关中断状态,CPU

12、不允许相应来自8259的所有硬件中断。需要注意的是,在进入中断处理例行程序时,计算机会自动关中断(置IF为0)。因此在编写中断处理程序时,一旦允许响应硬件中断,就应在中断处理程序中使用STI指令开中断,必要时再使用CLI指令关中断。,图14-5CPU响应中断,南开大学朱耀庭,14.2.18259A芯片编程,中断处理应遵循如下原则:在关中断状态保护现场在关中断状态屏蔽低级中断开中断后进行中断处理向中断命令寄存器发中断结束命令在关中断状态恢复现场开中断后返回编写8259A的中断处理程序时,如果要设置屏蔽字,例如,禁止除键盘以外的所有设备发出来的中断请求,则可以通过向21H端口送0FDH的方法来实现

13、:MOVAL,0FDHOUT21H,AL,南开大学朱耀庭,14.2.18259A芯片编程,编写8259的中断处理程序与编写软中断处理程序不同,必须参与中断服务程序结束时的信号发送工作。即在中断处理程序结束前,也就是IRET之前,必须向8259发出“中断结束”的EOI命令给8259的中断命令寄存器,表示该硬件中断处理已经完毕。这一命令的代码是20H,而中断命令寄存器的端口号是20H,所以这段程序应写为:MOVAL,20HOUT20H,AL下面用一个例子来说明如何对21H端口编程:,南开大学朱耀庭,14.2.18259A芯片编程,例14-1:屏蔽键盘中断例题目:测试屏蔽并关闭键盘中断设计思路:通过

14、向21H端口发送屏蔽字2H实现,例14-1:屏蔽键盘中断例,程序说明:程序运行后,键盘不能使用,该程序慎用,最好在虚拟机上调试,南开大学朱耀庭,14.2.28255编程,图14-6是8255的内部结构图8255用于系统板配置,它支持多种设备和信号,如键盘、扬声器、配置开关和若干其他信号该片对应4个I/O口。其中61H为输出端口PB,60H和62H是两个输入端口,分别称为PA和PC端口,63H对应单字节的命令寄存器图14-7是端口分配图,图14-68255内部结构图,图14-78255端口分配图1,图14-78255端口分配图2,南开大学朱耀庭,14.2.28255编程,PC机加电后,BIOS发

15、送99H给63H端口将该芯片初始化。可利用PB端口给定位置置1的方法选择PA和PC端口交替输入。利用PB口可读到曾写入PB口的当前值。下面分别介绍PA,PB和PC端口。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.28255编程,PB口:位02为1分别表示选通定时器2的门,扬声器数据选

16、通,PC口位03的选源。位36置0分别表示开盒式磁带机马达,允许RAM,允许由扩展槽发送错误信号,禁止键盘中断。位7则用以PA口输入时选源,用来给键盘发送肯定信号。PC口:位74置1分别表示奇偶错,扩充槽错,定时器2的输出,盒式磁带机的输入。位30视PB口位2为1或0而定,当PB口位2为1时,PC口位03分别表示系统板开关上的14位,指出扩展槽上RAM总数。当PB口位2为0时,PC口位03分别对应系统板开关2的58位,表示备用。,南开大学朱耀庭,14.2.28255编程,例如读系统板配置开关1所给出的驱动器个数,源程序如下。INAL,61H;读PB口的当前值ORAL,080H;(AL)80H,强迫位7为OUT61H,AL;PB口位7置1,使PA为开关1开门INAL,60H;读PA口,即得开关1状态NOTAL;AL各位取反MOVCL,6;置移位置SHRAL,CL;右移6位前面补0,(AL)现为驱动器数,南开大学朱耀庭,14.2.28255编程,例14-2编程8255芯片61H让扬声器发声题目:关闭定时器门,按同

展开阅读全文
相关资源
正为您匹配相似的精品文档
相关搜索

最新文档


当前位置:首页 > 医学/心理学 > 综合/其它

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