输入输出和中断汇编语言王爽版第6章.ppt

上传人:小飞机 文档编号:6611141 上传时间:2023-11-17 格式:PPT 页数:34 大小:239.16KB
返回 下载 相关 举报
输入输出和中断汇编语言王爽版第6章.ppt_第1页
第1页 / 共34页
输入输出和中断汇编语言王爽版第6章.ppt_第2页
第2页 / 共34页
输入输出和中断汇编语言王爽版第6章.ppt_第3页
第3页 / 共34页
输入输出和中断汇编语言王爽版第6章.ppt_第4页
第4页 / 共34页
输入输出和中断汇编语言王爽版第6章.ppt_第5页
第5页 / 共34页
点击查看更多>>
资源描述

《输入输出和中断汇编语言王爽版第6章.ppt》由会员分享,可在线阅读,更多相关《输入输出和中断汇编语言王爽版第6章.ppt(34页珍藏版)》请在三一办公上搜索。

1、第6章 输入输出程序设计,6.1 输入输出基本概念6.2 中断基本概念6.3 BIOS中断调用方式 键盘I/O 显示器I/O6.4 中断程序设计,本章重点:输入/输出指令、中断类型、中断向量表、中断处理过程、DOS/BIOS服务。,本章难点:中断向量表概念理解、DOS/BIOS中断程序设计。,6.1 输入/输出的基本概念,输入和输出设备(外设)是计算机系统的重要组成部分。外设与CPU连接是通过各种I/O接口实现的,它们之间的通信是通过接口中的端口地址利用一组I/O指令所编写的输入/输出程序实现的。,I/O端口与端口地址把I/O接口电路中能被CPU直接访问的寄存器或某些特定器件称之为端口(Por

2、t)。I/O接口中常设有数据口、命令口和状态口,是CPU与外设进行读/写操作使用的,各I/O端口由端口地址区分,I/O端口按存放信息的不同,分为三种类型 数据端口:用于存放CPU与外设间传送的数据信息 状态端口:用于暂存外设的状态信息 控制端口:用于存放CPU对外设或接口的控制信息,计算机I/O端口编址一般分两种方法:一种是将I/O与内存单元统一编址,另一种是将I/O独立编址。在80 x86微机中,是将I/O采用16bit独立编址,这个I/O空间允许设置64 K(65 536)个8位端口或32 K(32 768)个16位端口。,端口编址的形成:16位地址线形成0000HFFFFH,输入/输出(

3、I/O):指CPU与外部设备之间的数据传送。输入/输出是计算机与外部世界进行信息交换的重要环节。用汇编语言可以编写I/O的程序,控制外设的各种动作,最终实现输入和输出。汇编语言提供有专门的I/O指令:IN和OUT,输入指令IN:用来从指定的外设取信息送入累加器AL/AX当中。有4种形式:(1)IN AL,PORT功能:(PORT)AL(2)IN AX,PORT功能:(PORT)AX(3)IN AL,DX 功能:(DX)AL(4)IN AX,DX功能:(DX)AL,直接寻址,间接寻址,直接寻址:端口地址直接出现在指令当中,当端口地址在255(00H-0FFH)之间时,可用于直接寻址;间接寻址:当

4、端口地址超过0FFH时,即在100HFFFFH时须用间接寻址。,6.1 输入输出的基本概念,1、输入/输出指令,输出指令out用来把累加器的内容送往指定的端口,有四种形式:(1)OUTPORT,AL 功能:ALPORT(2)OUTPORT,AX 功能:AXPORT(3)OUTDX,AL 功能:AL(DX)(4)OUTDX,AX 功能:AX(DX),IN AL,21H;直接寻址,字节输入IN AX,20H;直接寻址,字输入MOV DX,200H;间接寻址IN AX,DX;字输入IN AL,DX;字节输入,举例:输入指令,1、输入/输出(续),举例:输出指令,;间接寻址,字节输出MOV DX,3F

5、CHMOV AL,80HOUT DX,AL,IN指令与MOV指令的区别:INAL,80HMOVAL,80H,注意,解释:数据传送方式指CPU与外设间的数据传送方式 各种不同的I/O设备要求的输入或输出信息是通过其接口的相应端口地址进行的,各个端口都有指定的操作地址,CPU通过输入/输出指令IN和OUT与外部设备交换信息。,2、数据传送方式,无条件传送方式查询方式中断方式直接存储器传送方式(DMA),I/O设备与主机之间进行数据交换有多种方式,概括起来可以分为,无条件传送方式示例,用一个8位输出锁存器控制8个发光二极管,使发光管从上向下依次一个一个地闪亮,每个发光管亮一段规定的时间。设输出锁存器

6、的地址为84H。START:MOV AL,01HNEXT:OUT 84H,AL CALL DELAY ROL AL,1 JMP NEXT,DELAY PROC PUSH AX MOV AX,COUNT TIME:DEC AX JNZ TIME POP AX RETDELAY ENDP,查询方式示例,假设从某输入设备上输入一组数据送缓冲区。;FAH为状态端口地址,F8H为数据端口地址,FCH为控制端口地址,DATA SEGMENTMESSI DB“BUFFER OVERFLOW”,“$”BUFF DB 60 DUP(?)DATA ENDSCODE SEGMENT ASSUME CS:CODE,D

7、S:DATASTART:MOV AX,DATA MOV DS,AX,MOV BX,OFFSET BUFF MOV CX,60 MOV AL,01H OUT 0FCH,AL;启动WAIT:IN AL,0FAH TEST AL,01H;最低位为1准备好 JZ WAIT IN AL,0F8H MOV BX,AL INC BX LOOP WAIT;检测缓冲区是否满,不满再输入,LEADX,MESSI MOVAH,09H INT21H MOVAH,4CH INT21HCODE ENDS END START,无条件传送方式:不管外设的工作状态如何,在CPU需要进行数据传输时就直接进行。适用于外设各种动作时

8、间固定,且条件已知的场合下。目前已用的很少查询方式:适用于CPU和外设工作不同步的情况。由于外设和CPU的工作速度差别很大,所以大多数情况采用的是程序查询传送方式。优点:可以用程序安排几个输入/输出设备的先后优先次序,最先查询的设备,其工作的优先级也最高。修改程序中的查询次序,实际上也就修改了设备的优先级。缺点:由于CPU需要不断地执行IN指令查询外设工作状态,特别是外设的工作速度相对CPU来讲都很慢,在CPU和外设之间进行数据传送过程中,CPU需要花费大量时间等待,不能进行其他操作,这样就浪费了CPU的时间。,特点:,中断方式,外设准备好时,外设向CPU发出中断请求,CPU转入中断处理程序,

9、完成输入输出工作。中断传送方式的最大特点是CPU与外设并行工作,即CPU启动外设后,不再等待外设工作的完成,而是执行另一个程序。当外设完成一次操作后,就向CPU发出中断请求,CPU暂停现行程序的执行而转去响应外设的中断请求,处理完后CPU恢复执行原来被中断的工作。,直接存储器传送(DMA)方式,由于高速外设(例如磁盘机等)准备数据的时间短,要求传送的数量较多,同时要求传送的速度快等特点,一般采用直接存储器传送方式,即DMA方式。DMA方式传送数据的一般过程是:1)先把数据在高速外设中存放的起始位置、数据在内存中存放的起始地址、传送数据长度等参数输出到连接高速外设的接口(DMA控制器)。2)启动

10、高速外设,设备准备开始直接传送数据。当高速外设直接传送准备好后,DMA控制器向处理机发送总线请求信号。处理机响应该请求信号,并让出总线控制权,高速外设在DMA控制器控制下交换数据。3)数据交换完毕后,由DMA控制器撤除总线请求信号,交回总线控制权。,6.2 中断基本概念,中断的概念8086的中断源及其优先级中断向量表中断指令及中断返回指令中断处理程序的设计,中断基本概念,1、什么是中断:当CPU正在执行某程序时,由于外界临时事件的发生,向CPU发出请求处理信号,CPU暂停现行程序的执行转去处理临时发生的事件,处理完后返回到被中断程序的断点处继续执行,这个过程就是中断。2、中断源:向CPU发出请

11、求信号的设备或部件(引起中断的事件)。3、中断服务程序:中断过程中,执行的事件处理程序4、中断系统:实现中断的硬件及软件。5、中断系统的功能:能实现优先级排队能实现中断嵌套,8086的中断源及其优先级,中断源,外部中断:包括可屏蔽中断INTR和不可屏蔽中断NMI。内部中断:包括除法错中断、溢出中断、软中断、断点中断和单步中断等。,内部中断内部中断简称内中断,又称软件中断。它不需要外部硬件支持。并且不受中断标志位状态的影响。8086/8088内部中断有以下5种:l 除法错中断类型0中断 l 单步中断类型1中断 l 断点中断类型3中断 l 溢出中断类型4中断 l 中断指令指令INT n中断,除法错

12、中断在执行除法指令时,若发现除数为0或商超过了寄存器所能表达的范围,则立即产生一个类型为0的中断。溢出中断如果溢出标志OF置1,有一条指令INTO中断发生溢出的算术操作。例:ADD AX,VALUE INTO,单步中断当标志位TF置为1时,每条指令执行后,CPU自动产生一个类型号为1的中断。断点中断通常调试程序时会在某个程序段后设置断点以观察程序执行到此处的结果。断点可以设置在程序的任何地方,设置断点相当于把一条中断指令INT 3插入程序中,CPU每执行到断点处的INT 3指令就产生一个中断。,由中断指令INT n引起的内中断CPU执行一条INT n指令后,会立即产生中断,并且调用系统中相应的

13、中断处理程序来完成中断处理功能,中断指令中的n指出中断类型。例:INT 21H,外部中断,不可屏蔽中断NMI:常用于紧急故障处理或紧迫事件处理中。它的中断类型号为2。,可屏蔽中断INTR:可屏蔽中断的设置主要是为了实现多中断的处理和中断嵌套的应用。它由键盘等外部设备产生。这些外部设备通过8259A可编程控制器与CPU相连,8259A可接收来自外设的中断请求信号,并把中断源的中断类型号送CPU,如果CPU响应该外设的中断请求,就自动转入相应的中断处理程序。从外设发出的中断请求到CPU响应中断,有两个控制条件:IMR:8259A的中断屏蔽寄存器。IF:CPU的标志状态寄存器中的中断允许位的状态。,

14、中断控制器8259A与CPU的通信端口中断控制器8259A通过端口20H、21H与CPU通信。其中,端口20H对应于中断命令寄存器,端口21H对应于中断屏蔽寄存器。中断命令寄存器:当某个硬件中断发生后,中断控制器8259A将屏蔽来自该硬件设备的中断,直到接收到中断服务程序发送的中断结束命令为止。若不发送中断结束命令,则中断控制器不能再接收来自该设备以及更低级的中断请求。发送中断结束命令的方法是向中断命令寄存器输出一个字节20H:mov al,20h out 20h,al中断屏蔽寄存器:中断屏蔽寄存器的8位对应于8个硬件中断,即端口21H的第7位对应于IRQ0 IRQ7。将某一位置,则禁止相应的

15、硬件中断;某一位置,则允许相应的硬件中断。例如:若系统只允许键盘中断,则可执行下列指令:mov al,11111101 out 21h,al,CPU对可屏蔽中断的响应条件:要使CPU响应某个I/O设备发出的中断请求,必须满足下列条件:CPU允许中断,即中断标志IF为该设备相应的中断屏蔽位为,优先级高 内中断(除法错,INTO,INT n)非屏蔽中断(NMI)可屏蔽中断(INTR)低 单步中断,三、中断向量与中断向量表8086计算机系统共可处理256种不同的中断,每种中断对应0255(00FFH)之间惟一的一个编号,称为中断类型号。每个中断都对应着一个与之对应的中断处理程序,中断处理程序的起始地

16、址称为中断入口地址(中断向量),系统将各种中断处理程序的入口地址放在一起形成一个地址表,称为中断向量表,如图所示。固定存放在内存的最低1K字节中。每一个中断服务程序的入口地址在表中占4个字节,其中前两个单元存放中断处理程序的偏移地址IP的值,后两个单元存放中断处理程序的段地址CS值。按中断类型号顺序存放。中断类型号与中断向量地址间的关系:中断向量的地址中断类型号X4,中断向量表,例如:报警中断的中断类型为4AH,它的中断向量地址为4AH4=128H,即128H和129H两字节存放的是报警中断处理程序的偏移地址;12AH和12BH两字节存放的是报警中断处理程序的段地址。取出段地址和偏移地址放入C

17、S和IP,CPU就可以转入相应的中断处理程序。下图以BIOS中断INT 4AH为例,表示出中断操作的5个步骤:,(1)取中断类型号;(2)计算中断向量地址;(3)取中断向量,偏移地址送IP,段地址送CS;(4)转入中断处理程序;(5)中断返回到INT指令的下一条指令。,图8.4 报警中断操作步骤,表8-2 中断向量表地址分配,采用中断向量的方法,大大加快了中断处理的速度。因为计算机可直接通过中断向量表转向相应的处理程序,而不需要CPU去逐个检测和确定中断原因。下表列出了80 x86各类型中断在中断向量表中的地址。,、中断响应过程:中断发生时,中断硬件机构自动完成如下响应过程:(1)取中断类型号

18、N;(2)标志寄存器(PSW)内容压栈;(3)当前代码段寄存器(CS)内容压栈;(4)当前指令指针(IP)内容压栈;(5)禁止外部中断和单步中断(置IF=0,TF=0);(6)从中断向量表中取4n的字内容送IP,取4n2的字内容送CS;(7)转中断处理程序。,中断发生的过程很像子程序调用,但有两点不同:(1)在保护中断现场时,除了保护返回地址CS:IP之外,还保存标志寄存器PSW的内容。因为标志寄存器内容记录中断发生时程序指令运行的结果特征,当CPU处理完中断请求返回原程序时,需要保证原程序工作的连续性和正确性,所以中断发生时PSW的内容也要保存起来。(2)中断发生时CPU自动清除了IF和TF

19、,目的是使CPU转入中断处理程序后,不允许再产生新的中断。如果在执行中断处理程序中,还允许外部中断,可以通过STI指令再把IF置1。,编写中断处理程序和编写子程序一样,所使用的汇编语言指令没有特殊限制,只是中断处理程序返回时使用IRET指令。,四、中断指令INT n;中断调用指令,其中n为中断类型号功能:转到相应中断处理程序执行操作过程:系统首先保护断点,将CS、IP和FR内容压栈后从中断向量表相应单元取出中断向量,送入CS和IP,完成转移,IRET;中断返回指令。从中断服务程序返回主程序,主要是恢复中断前的CS、IP和FR的内容。操作:从堆栈中取出被中断了的程序段的段地址、偏移地址,以及标志状态寄存器中的内容分别送入CS、IP、和FLAGS中。说明:IRET指令是中断服务程序的最后一条要执行的指令,它使CPU从中断服务程序返回被中断的断点处继续执行。,

展开阅读全文
相关资源
猜你喜欢
相关搜索
资源标签

当前位置:首页 > 生活休闲 > 在线阅读


备案号:宁ICP备20000045号-2

经营许可证:宁B2-20210002

宁公网安备 64010402000987号