安徽理工大学计算机汇编教程-输入输出程序设计

整理文档很辛苦,赏杯茶钱您下走!

免费阅读已结束,点击下载阅读编辑剩下 ...

阅读已结束,您可以下载文档离线阅读编辑

资源描述

计算机科学与技术系《汇编语言程序设计》2020/1/3第6章输入/输出程序设计18086/8088和ARM核汇编语言程序设计第6章输入/输出程序设计计算机科学与技术系《汇编语言程序设计》2020/1/3第6章输入/输出程序设计26.1输入/输出指令6.2CPU与外设传送数据的控制方式6.3程序查询传送方式第6章输入/输出程序设计6.4中断传送方式计算机科学与技术系《汇编语言程序设计》2020/1/3第6章输入/输出程序设计36.1.1I/O端口编址方式6.1输入/输出指令(1)统一编址:存储器(内存)与I/O端口的编址占用同一个地址空间。特点是所有对内存操作的指令对I/O端口同样有效,指令丰富,但会损失一部分的内存空间。(2)独立编址:内存与I/O端口对应不同的地址空间。对I/O端口有专门的指令。缺点是对I/O端口操作的指令不及统一编址时丰富(例如,8086/8088中对I/O端口就只有最基本的输入输出指令),但能最大程度地满足存储空间的寻址范围。计算机科学与技术系《汇编语言程序设计》2020/1/3第6章输入/输出程序设计46.1.1I/O端口编址方式6.1输入/输出指令(a)存储器映射方式示意图(b)I/O映射方式示意图图6-1I/O映射方式和存储器映射方式的示意图I/O空间0000HFFFFH00000H内存空间FFFFFH1M00000H供I/O接口使用内存空间FFFFFH计算机科学与技术系《汇编语言程序设计》2020/1/3第6章输入/输出程序设计56.1.2输入/输出指令6.1输入/输出指令I/O指令:输入指令:INAL,PORTINAX,PORTINAL,DXINAX,DX输出指令:OUTPORT,ALOUTPORT,AXOUTDX,ALOUTDX,ALPORT:端口地址若地址值≦255,可直接寻址(寻址范围256个端口);否则,需经寄存器DX间接寻址(寻址范围64K个端口)计算机科学与技术系《汇编语言程序设计》2020/1/3第6章输入/输出程序设计66.1.3I/O端口寻址方式6.1输入/输出指令1.直接I/O端口寻址方式这种寻址方式就是直接书写端口地址,由于这种寻址方式的指令编码是两字节的,其中第一字节是操作码,第二字节存放端口地址。所以这种寻址方式仅能对256个8位或16位端进行输入/输出。例如:INAL,nINAX,nOUTn,ALOUTn,AX其中,n=0~255计算机科学与技术系《汇编语言程序设计》2020/1/3第6章输入/输出程序设计76.1.3I/O端口寻址方式6.1输入/输出指令2.间接I/O端口寻址方式这种寻址方式是用寄存器DX表示端口地址。采用这种寻址方式的输入/输出指令是单字节编码。由于DX是16位寄存器,所以这种寻址方式可对0~65535个端口地址进行访问:INAL,DXINAX,DXOUTDX,ALOUTDX,AX在程序设计中,这种寻址方式比较灵活。因为在程序中,只要修改DX的内容就可以用同一条输入/输出指令去访问不同的端口,实现可变端口的输入/输出。计算机科学与技术系《汇编语言程序设计》2020/1/3第6章输入/输出程序设计86.1输入/输出指令6.3程序查询传送方式第6章输入/输出程序设计6.4中断传送方式6.2CPU与外设传送数据的控制方式计算机科学与技术系《汇编语言程序设计》2020/1/3第6章输入/输出程序设计96.2CPU与外设传送数据的控制方式主机与外设之间的数据传送(控制)方式有:●程序查询传送方式●程序中断传送方式●直接存储器存取(DMA)方式●I/O处理机方式(简称IOP协处理机方式)。1.查询方式先查询外设的状态,后进行输入/输出操作的工作方式,称为查询式输入/输出方式。外设的状态是通过输入指令读外设的状态寄存器获得的。每个状态寄存器都有对应的地址,称为端口地址。计算机科学与技术系《汇编语言程序设计》2020/1/3第6章输入/输出程序设计106.2CPU与外设传送数据的控制方式CPU接口外部设备数据数据状态状态控制控制图6.2主机与外设间传送的信息计算机科学与技术系《汇编语言程序设计》2020/1/3第6章输入/输出程序设计11CPU打印机控制器打印机DBSTBBUSYCBDBAB图6.3打印机连接示意图【例】向打印机输出字符。6.2CPU与外设传送数据的控制方式计算机科学与技术系《汇编语言程序设计》2020/1/3第6章输入/输出程序设计122.程序中断传送方式6.2CPU与外设传送数据的控制方式从查询式的传输过程可以看出,它的优点是硬件开销小,使用起来比较简单。但在此方式下,CPU要不断地查询外设的状态,当外设未准备好时,CPU就只能循环等待,不能执行其它程序,这样就浪费了CPU的大量时间,降低了主机的利用率。为了解决这个矛盾,提出了中断传送方式:即当CPU进行主程序操作时,外设的数据已存入输入端口的数据寄存器;或端口的数据输出寄存器已空,由外设通过接口电路向CPU发出中断请求信号,CPU在满足一定的条件下,暂停执行当前正在执行的主程序,转入执行相应能够进行输入/输出操作的子程序,待输入/输出操作执行完毕之后CPU即返回继续执行原来被中断的主程序。这样CPU就避免了把大量时间耗费在等待、查询状态信号的操作上,使其工作效率得以大大地提高。计算机科学与技术系《汇编语言程序设计》2020/1/3第6章输入/输出程序设计133.直接存储器存取(DMA)传送方式6.2CPU与外设传送数据的控制方式中断输入/输出方式可以大大提高CPU的效率,但仍需要CPU通过程序进行传送。每次中断处理需要保护断点、保护现场及恢复现场、恢复断点,这些操作都要占用CPU的额外时间。对于高速的外部设备在成批地交换数据时,这种中断传送方式就显得太慢,因而不能满足高速交换数据的要求。DMA方式能摆脱CPU的直接干预,利用硬件控制设备DMA控制器(DMAC),实现外部设备与内存间的直接数据传送。计算机科学与技术系《汇编语言程序设计》2020/1/3第6章输入/输出程序设计146.1输入/输出指令第6章输入/输出程序设计6.4中断传送方式6.2CPU与外设传送数据的控制方式6.3程序查询传送方式计算机科学与技术系《汇编语言程序设计》2020/1/3第6章输入/输出程序设计156.3程序查询传送方式例6.1输出字符至打印机。设打印机控制器有3个端出:数据端口的端口地址为378H,状态端口地址为379H,控制端口地址为37AH。在PC机中,打印机通过打印控制器与CPU连接。问题分析:发送给打印机的字符,暂存于控制器中的数据锁存器。打印机的状态存放在控制器的缓冲器中,使用查询方式控制打印过程时,在每把一个字符送到控制器后,都要先查询打印机的状态信息是否为忙(BUSY为0)。如不忙,则发送选通信号,启动打印机取走字符并打印。若为忙,则重新查询,直到不忙时为止。计算机科学与技术系《汇编语言程序设计》2020/1/3第6章输入/输出程序设计16程序如下:MOVBX,OFFSETBUFFERMOVCX,COUNTBG:MOVAL,[BX];取字符MOVDX,378HOUTDX,AL;输出字符到控制器MOVDX,379HWT:INAL,DX;读入打印机状态TESTAL,80H;判忙否JZWTMOVDX,37AHMOVAL,0DH;令打印机打印字符OUTDX,ALMOVAL,0CHOUTDX,ALINCBX;指向下一个输出字符LOOPBG6.3程序查询传送方式计算机科学与技术系《汇编语言程序设计》2020/1/3第6章输入/输出程序设计17例6.2采用程序查询的数据采集程序。问题分析:·为了采集具有8个模拟量输入的数据,通过端口4的低3位的值选通模拟量IN0,IN1至IN7中的一个,使其通过多路开关把一个被选择的模拟量送至A/D转换器。·A/D转换器的启停则由端口4的D4位加以控制,若D4=1,则启动A/D转换器进行转换;若D4=0,使A/D转换器停止转换。·A/D转换器的状态信号EOC是由端口2的D0位输入CPU的,A/D转换后的数字量由端口3送入CPU。因此,端口4为控制端口,端口2为状态端口,端口3为数据端口。6.3程序查询传送方式计算机科学与技术系《汇编语言程序设计》2020/1/3第6章输入/输出程序设计186.3程序查询传送方式程序如下所示。DATASEGMENTBUFFDB8DUP(?)DATAENDSCODESEGMENTASSUMECS:CODE,DS:DATASTART:MOVAX,DATAMOVDS,AXMOVDL,10H;设置AD启动转换MOVDI,OFFSETBUFF;DI指向输入缓冲区MOVCX,8AGAIN:MOVAL,DLANDAL,0EFH;使端口4的D4为0OUT4,AL;停止A/D转换CALLDELAY;延时等待A/D停止操作MOVAL,DLOUT4,ALA1:INAL,2;读入状态TESTAL,01H;将EOC送CFJZA1;为0,则未推备好INAL,3;读入一个A/D转换值MOV[DI],ALINCDIINCDL;选择下一个模拟量LOOPAGAINMOVAH,4CHINT21HCODEENDSENDSTART计算机科学与技术系《汇编语言程序设计》2020/1/3第6章输入/输出程序设计196.1输入/输出指令6.3程序查询传送方式第6章输入/输出程序设计6.2CPU与外设传送数据的控制方式6.4中断传送方式计算机科学与技术系《汇编语言程序设计》2020/1/3第6章输入/输出程序设计206.4中断传送方式6.4.1中断的概念1.中断的引入中断功能已经成为计算机不可缺少的组成部分。中断的引入具有较多的优点:(1)分时操作(2)实现实时处理(3)故障处理2.中断源引起中断的原因或能发出中断申请的来源,称为中断源。通常中断源有以下4种:(1)输入/输出设备(2)实时时钟(3)故障源(4)为调试程序而设置的中断源计算机科学与技术系《汇编语言程序设计》2020/1/3第6章输入/输出程序设计213.中断系统的功能6.4中断传送方式6.4.1中断的概念(1)实现中断及返回(2)实现优先级处理(3)中断嵌套计算机科学与技术系《汇编语言程序设计》2020/1/3第6章输入/输出程序设计226.4中断传送方式6.4.28088/8086中断系统1.中断源计算机科学与技术系《汇编语言程序设计》2020/1/3第6章输入/输出程序设计238086中断的分类:内部中断和硬件中断(1)内部中断内部中断简称内中断,又称软件中断。它不需要外部硬件支持。并且不受中断标志位状态的影响。8086/8088内部中断有以下5种:l除数为0中断——类型0中断l溢出中断——类型4中断l单步中断——类型1中断l断点中断——类型3中断l中断指令——指令INTn中断由cpu的某些错误引起为调试程序而设置的中断6.4中断传送方式6.4.28088/8086中断系统计算机科学与技术系《汇编语言程序设计》2020/1/3第6章输入/输出程序设计246.4中断传送方式6.4.28088/8086中断系统(2)硬件中断:来自处理机的外条件所以又称外中断硬件中断主要有两种来源——非屏蔽中断NMI和可屏蔽中断INTR。•非屏蔽中断NMI。非屏蔽中断来源于三方:系统板的RAM在读写时产生奇偶校验错;I/O通道中的扩展选件出现奇偶校验错;协处理器8087的异常状态产生的中断。•可屏蔽中断INTR。由外部设备通过一片8259A产生的中断请求。从外设发出的中断请求到cpu相应中断,用两个控制条件起决定作用:1、外设的中断请求是否被屏蔽。2、cpu是否允许相应中断。计算机科学与技术系《汇编语言程序设计》2020/1/3第6章输入/输出程序设计25外部设备向cpu发出中断请求,cpu是否相应还与IF有关STI——开中断指令将标志寄存器中的中断标志位IF置1,允许CPU响应来自INTR引脚的中断请求CLI——关中断指令将标志寄存器中的中断标志位IF清0,使CPU不响应来自INTR引脚的中断请求6.4中断传送方式6.4.2808

1 / 39
下载文档,编辑使用

©2015-2020 m.777doc.com 三七文档.

备案号:鲁ICP备2024069028号-1 客服联系 QQ:2149211541

×
保存成功