资源描述:
《第8章 输入输出程序设计.ppt》由会员上传分享,免费在线阅读,更多相关内容在行业资料-天天文库。
1、第8章输入输出程序设计输入输出基本概念输入输出指令及其应用I/O设备的数据传送方式中断传送方式*BIOS中断调用方式输入输出基本概念输入输出程序是利用一组I/O指令存取外设接口中的寄存器(通过I/O端口地址寻址),从而使主机获得外设的状态信息,控制外设的各种动作,最终实现输入和输出。问题:什么是I/O端口?输入输出指令及其应用输入指令(I/OCPU)指令格式:INAL,PORT(字节)INAX,PORT(字)执行操作:(AL)(PORT)(字节)(AX)(PORT+1,PORT)(字)指令格式:INAL,DX(字节)INAX,DX(字)执行操作
2、:(AL)((DX))(字节)(AX)((DX)+1,(DX))(字)输出指令(CPUI/O)指令格式:OUTPORT,AL(字节)OUTPORT,AX(字)执行操作:(PORT)(AL)(字节)(PORT+1,PORT)(AX)(字)指令格式:OUTDX,AL(字节)OUTDX,AX(字)执行操作:((DX))(AL)(字节)((DX)+1,(DX))(AX)(字)输入输出指令使用时注意:*不影响标志位*前256个端口号00H~FFH可直接在指令中指定*如果端口号256,端口号DX例:INAX,28HMOVDATA_WORD,AX
3、例:MOVDX,3FCHINAX,DX例:测试某状态寄存器(端口号27H)的第2位是否为1INAL,27HTESTAL,00000100BJNZERROR;若第2位为1,转到ERROR处理I/O设备的数据传送方式1、无条件传送方式2、查询方式3、中断方式4、直接存储器传送方式(DMA)1无条件传送方式在CPU与慢速变化的设备交换数据时,可以认为它们总是处于“就绪”状态,随时可以进行数据传送,这就是无条件传送,或称立即传送、同步传送适合于简单设备,如LED数码管、按键等无条件传送的接口和操作均十分简单这种传送有前提:外设必须随时就绪【例1】用一个8位输
4、出锁存器控制8个发光二极管,使发光管从上向下依次一个一个地闪亮,每个发光管亮一段规定的时间。设输出锁存器的地址为84H。START:MOVAL,01H;控制代码01H→ALNEXT:OUT84H,AL;(AL)→84HCALLDELAY;延时一定时间ROLAL,1;控制代码循环左移1位JMPNEXT;无条件转NEXT继续程序循环DELAYPROC;定义延时子程序DELAYPUSHAXMOVAX,COUNTTIME:DECAXJNZTIMEPOPAXRET;返回调用程序DELAYENDP;子程序调用结束2查询方式⑴查询环节寻址状态口读取状态寄存器的标志
5、位若不就绪就继续查询,直至就绪⑵传送环节寻址数据口是输入,通过输入指令从数据端口读入数据是输出,通过输出指令向数据端口输出数据输入状态就绪?数据交换YN【例2】向打印机输出字符。源程序:┆MOVBX,OFFSETMESS;置缓冲区偏移量MOVCX,COUNT;置输出字符计数器NEXT:MOVDX,379H;读打印机状态WAIT:INAL,DXTESTAL,80H;判断‘忙’否?JZWAIT;忙,重查询MOVAL,[SI];取字符MOVDX,378H;输出字符到控制器OUTDX,ALMOVDX,37AH;形成选通信号MOVAL,0DH;准备选通命令OU
6、TDX,AL;选通MOVAL,0CH;准备复位选通命令OUTDX,AL;复位选通命令INCSI;指向下一输出字符LOOPNEXT┆3中断传送方式中断的概念8086的中断源及其优先级中断向量表中断指令及中断返回指令中断处理程序的设计中断的概念当CPU正在执行某程序时,由于外界临时事件的发展,向CPU发出请求处理信号,CPU暂停现行程序的执行转去处理临时发生的事件,处理完后返回到被中断程序的断点处继续执行,这个过程就是中断。向CPU发出请求信号的设备或部件,称为中断源。中断过程中,执行的事件处理程序称为中断服务程序。相对于它来说,被中断了的程序就是主程序
7、。有了中断,计算机就能够自动而及时地处理随机发生的事件,且可使高速的CPU与低速的I/O设备以中断方式传递数据,CPU不必查询I/O的状态,从而使计算机提高了工作效率。8086的中断源及其优先级中断源8086/8088系统设有如下的中断源:硬件中断:包括可屏蔽中断INTR和不可屏蔽中断NMI。软件中断:包括除法错中断、溢出中断、软中断、断点中断和单步中断等。软件中断软件中断又称内部中断。它不需要外部硬件支持。并且不受中断标志位状态的影响。8086/8088内部中断有以下5种:l除法错中断——类型0中断l单步中断——类型1中断l断点中断——类型3中断l
8、溢出中断——类型4中断l中断指令——指令INTn中断除法错中断在执行除法指令时,若发现除数为0或商超过了寄存