《汇编语言程序设计》第8章输入、输出与中断.ppt
《《汇编语言程序设计》第8章输入、输出与中断.ppt》由会员分享,可在线阅读,更多相关《《汇编语言程序设计》第8章输入、输出与中断.ppt(99页珍藏版)》请在淘文阁 - 分享文档赚钱的网站上搜索。
1、第8章输入/输出与中断q8.1 输入/输出q8.2 CPU与外设之间的数据传送方式q8.3 中断q8.4 DOS和BIOS中断调用第8章输入/输出与中断q8.1 输入/输出q8.2 CPU与外设之间的数据传送方式q8.3 中断q8.4 DOS和BIOS中断调用8.1 输入/输出nI/O端口编址方式nI/O端口寻址方式n I/O端口编址方式8.1 输入/输出n独立编址:I.O端口有独立的地址空间,CPU使用不同的指令访问内存储器和I.O端口。n统一编址:在系统中,内存储器和I.O端口的地址统一安排,二者没有重叠的地址空间,CPU使用相同的指令访问内存储器和I.O端口,由地址来确定访问的是内存储器
2、还是I.O端口。n I/O端口编址方式8.1 输入/输出n独立编址:硬件系统复杂,但没有占用内存的地址空间。n统一编址:硬件系统简单,可以利用丰富的存储器访问指令访问I.O设备,从而提高了程序设计的灵活性,但I.O设备占用了部分地址空间,减少了内存的地址空间。n I/O端口寻址方式8.1 输入/输出n直接端口寻址n间接端口寻址n I/O端口寻址方式8.1 输入/输出n直接端口寻址IN AL,PORT;PORT端口内容读到AL累加器中IN AX,PORT;PORT+1和PORT端口内容读到AX累加器中OUT PORT,AL;将AL累加器中内容写到PORT端口OUT PORT,AX;将AX累加器中
3、内容写到PORT+1和PORT端口n I/O端口寻址方式8.1 输入/输出n间接端口寻址MOV DX,PORT;PORT端口地址传送到间址寄存器DX中IN AL,DX;将以DX中内容为地址的I.O端口内容读到AL累加器中IN AX,DX ;将以(DX+1、DX)中内容为地址的两个I.O端口内容读到AX累加器中OUT DX,AL ;将AL累加器中内容写到以DX中内容为地址的I.O端口OUT DX,AX ;将AX累加器中内容写到以(DX+1、DX)中内容为地址的两个I.O端口第8章输入/输出与中断q8.1 输入/输出q8.2 CPU与外设之间的数据传送方式q8.3 中断q8.4 DOS和BIOS中
4、断调用8.2 CPU与外设之间的数据传送方式n程序控制方式n中断处理方式n直接存储器存取方式n 程序控制方式8.2 CPU与外设之间的数据传送方式nCPU通过读取端口状态寄存器的标志位来了解外设的工作状态,据此来决定对外设的访问。采用这种方法进行数据传送的方式称为程序控制方式,通常称作(程序)查询方式。n 程序控制方式8.2 CPU与外设之间的数据传送方式8.1 访问外设的程序控制流程图n 程序控制方式8.2 CPU与外设之间的数据传送方式n在实际应用中,为防止因某种原因造成CPU处于死循环查询状态,可根据通常状态下设备转到就绪状态所需时间或人们的可容忍时间,在程序中设置一预定的循环次数值(超
5、时值),并安排超时检测程序段,如设备在该时间内未转到就绪状态,则CPU从循环查询状态中跳出,防止因为CPU处于死循环查询状态而使访问设备的程序不能正常运行。n 程序控制方式8.2 CPU与外设之间的数据传送方式n 程序控制方式8.2 CPU与外设之间的数据传送方式n例8.1 读微机中实时钟RT.CMOS,把读到的秒、分和时保存到变量中。CMOS RAM中相关各字节的含义见表8.1。n 程序控制方式8.2 CPU与外设之间的数据传送方式n分析:RT/CMOS RAM的状态寄存器A的位7是计时更新标志位,为1表示实时钟正在计时,为0表示实时钟信息可以读出。在读实时钟前,要判别该标志位是否为0。n
6、程序控制方式8.2 CPU与外设之间的数据传送方式PORT EQU 70H;CMOSPORT EQU 70H;CMOS地址索引端口,地址索引端口,71H71H为为CMOSCMOS数据端口地址数据端口地址REGA EQU 0AH;REGA EQU 0AH;状态寄存器状态寄存器A A地址地址FLAG EQU 80H;FLAG EQU 80H;更新标志位更新标志位SECOND EQU 00H;SECOND EQU 00H;秒单元地址秒单元地址MINUTE EQU 02H;MINUTE EQU 02H;分单元地址分单元地址HOUR EQU 04H;HOUR EQU 04H;时单元地址时单元地址SEC
7、DB?;SEC DB?;保存秒值的变量保存秒值的变量MIN DB?;MIN DB?;保存分值的变量保存分值的变量HR DB?;HR DB?;保存时值的变量保存时值的变量CHECK:CHECK:MOV ALMOV AL,REGAREGAOUT PORTOUT PORT,ALALIN ALIN AL,PORT+1;PORT+1;读状态寄存器读状态寄存器A ATEST ALTEST AL,FLAG;FLAG;检测状态寄存器检测状态寄存器A A的的Bit7Bit7更新标志更新标志JNZ CHECK;JNZ CHECK;如如Bit7=1Bit7=1日期日期.时间不可读时间不可读;跳回跳回CHECKCHE
8、CK处继续检测处继续检测MOV ALMOV AL,SECOND;SECOND;否则可读否则可读OUT PORTOUT PORT,ALALIN ALIN AL,PORT+1;PORT+1;读秒值读秒值MOV SECMOV SEC,AL;AL;保存秒值保存秒值MOV ALMOV AL,MINUTEMINUTEOUT PORTOUT PORT,ALALIN ALIN AL,PORT+1;PORT+1;读分值读分值MOV MINMOV MIN,AL;AL;保存分值保存分值MOV ALMOV AL,HOURHOUROUT PORTOUT PORT,ALALIN ALIN AL,PORT+1;PORT+1
9、;读时值读时值MOV HRMOV HR,AL;AL;保存时值保存时值n 程序控制方式8.2 CPU与外设之间的数据传送方式n例8.2 利用查询方式打印一个字符。n分析:利用查询方式打印一个字符的流程是:首先输入打印数据,随后读取打印机工作状态信息,判断打印机是否忙;如打印机不忙,向打印机发出选通命令;如打印机忙,则在规定的超时时间段内反复查询打印机工作状态信息,直到打印机不忙或超时结束,跳转到相应处去处理。n 程序控制方式8.2 CPU与外设之间的数据传送方式;入口参数入口参数:AL=:AL=要打印字符的要打印字符的ASCIIASCII码,码,BL=BL=超时参数,即规定查询的次数超时参数,即
10、规定查询的次数;DX=;DX=数据寄存器端口地址数据寄存器端口地址;DX+1:;DX+1:状态寄存器端口地址,位状态寄存器端口地址,位7=17=1表示不忙表示不忙;DX+2:;DX+2:控制寄存器端口地址控制寄存器端口地址;出口参数出口参数:AH=:AH=打印机状态,其中打印机状态,其中:;位位0=10=1表示超时,表示超时,位位7=17=1表示忙表示忙PRINT PROC FARPRINT PROC FAROUT DXOUT DX,AL ;AL ;输出打印数据输出打印数据INC DX;DX=INC DX;DX=状态寄存器端口地址状态寄存器端口地址DELAY:DELAY:MOV CXMOV C
11、X,0 0DELAY1:DELAY1:IN ALIN AL,DX;DX;读取状态信息读取状态信息MOV AHMOV AH,ALALTEST ALTEST AL,80H;80H;打印机是否忙打印机是否忙?JNZ CHULI;JNZ CHULI;不忙,则转到不忙,则转到CHULICHULILOOP DELAY1;LOOP DELAY1;忙,继续查询忙,继续查询DEC BL;DEC BL;超时参数减超时参数减1 1JNZ DELAY;JNZ DELAY;未超时,继续查询未超时,继续查询OR AHOR AH,81H;81H;设置超时标志、设置忙标志设置超时标志、设置忙标志JMP JIESHU;JMP
12、JIESHU;转结束转结束CHULI:CHULI:INC DX;INC DX;不忙,不忙,DX=DX=控制寄存器端口地址控制寄存器端口地址MOV ALMOV AL,0DH OUT DX0DH OUT DX,AL;AL;发出选通命令发出选通命令PUSH CX;PUSH CX;延时,确保选通脉冲宽度延时,确保选通脉冲宽度MOV CXMOV CX,800H800HLOOP LOOP POP CXPOP CXMOV ALMOV AL,0CH0CHOUT DXOUT DX,AL;AL;复位选通命令复位选通命令AND AHAND AH,7EH;7EH;清除超时标志、清除忙标志清除超时标志、清除忙标志JIE
13、SHU:JIESHU:RETRETPRINT ENDPPRINT ENDPn 程序控制方式8.2 CPU与外设之间的数据传送方式n查询方式的优点:接口硬件简单、经济,且可用程序安排访问若干个外设的先后次序。n查询方式的缺点:CPU与外设只能串行工作,CPU在查询的时间段内只能与一台设备交换信息,且大部分时间处于空闲等待状态,浪费了原本可执行大量指令的时间。n 中断处理方式8.2 CPU与外设之间的数据传送方式n当CPU需要与外设进行数据交换时,向外设发出启动命令,然后CPU不必查询外设的工作状态,而是继续执行主程序。当外设准备就绪可以进行I.O操作时,向CPU发出中断申请,CPU暂停正在执行的
14、程序(中断原程序),转去执行与外设之间的I.O操作,完成操作后即返回,继续执行被中断的程序。n这种方式与查询方式相比,大大提高了CPU的工作效率,也提高了整个计算机系统的性能和效率。n 直接存储器存取方式8.2 CPU与外设之间的数据传送方式n中断传送方式可以大大提高CPU的利用率,对磁盘、磁带等块设备、模数转换器(A.D)等高速I.O设备,在批量进行数据交换的情况下(如磁盘与内存间的信息交换),用执行输入输出指令的方法或使用中断方法来传输字节,就显得太慢。为了提高大批量数据传送的效率,引入了直接存储器存取方式(DMA)进行数据传送。n通常情况下,系统的地址总线、数据总线及大部分控制总线是由C
15、PU管理的。在采用DMA方式进行数据传送时,CPU让出对总线的控制权,用硬件DMA控制器接管对总线的控制权。在DMA控制器的控制下,不经CPU的干预而直接在外设与内存间进行批量数据的快速传送。n 直接存储器存取方式8.2 CPU与外设之间的数据传送方式n完整的DMA数据传送过程必须经过下述4个步骤:(1)CPU对DMA控制器初始化,对I.O接口发出操作命令,I.O接口提出DMA请求。(2)DMA控制器接受I.O接口的DMA请求,向CPU发出总线请求信号HOLD。当CPU发出总线回答信号HLDA将总线让出后,DMA接管对总线的控制,进入DMA方式。DMA控制器通知I.O接口开始DMA数据传送。n
16、 直接存储器存取方式8.2 CPU与外设之间的数据传送方式(3)DMA控制器发出读写命令,直接控制内存与I.O间进行批量数据的快速传送:传输数据的存储器地址(在内存地址计数器中)通过地址总线发出;传输的数据字节在字计数器中;地址计数器自动加l;字计数器自动减1;如字计数器非0,继续进行数据传送。(4)如字计数器变到0,则停止数据传送,向CPU发出中断请求,DMA控制器释放总线控制权,并向I.O接口发出结束信号,DMA数据传送过程结束。第8章输入/输出与中断q8.1 输入/输出q8.2 CPU与外设之间的数据传送方式q8.3 中断q8.4 DOS和BIOS中断调用8.3 中断n中断的概念n中断类
17、型码n中断向量表n中断优先级n中断处理过程n 中断的概念8.3 中断n中断就是计算机暂停执行当前程序,转而执行更紧急的程序,在执行结束后,自动返回到原程序暂停处继续执行的过程。n一般把能够引起中断的事件或能够发出中断请求的来源称为中断源。n在8086/8088/80286/80386的中断系统中,最多能够处理256种中断,中断类型码(即中断类型号)为0到255。n 中断类型码8.3 中断中断的类型:n外中断n内中断n 中断类型码8.3 中断1.外中断n外中断来自处理机的外部条件,如I.O设备或其他处理机等,以随机出现的方式中断CPU执行的现行程序而转向中断服务程序。n外部中断通常用于指示I.O
18、设备的一次操作已完成。n外部中断主要有两个来源:一种是非屏蔽中断(NMI),另一种是来自各种外部设备的中断,称为可屏蔽中断。n 中断类型码8.3 中断n80X86有两根引脚INTR和NMI接受外部中断请求信号:IN-TR接受可屏蔽中断请求,NMI接受不可屏蔽中断请求。n一根引脚INTR只能直接引入一种外设中断。为了支持更多的外部硬件中断,在系统中采用了硬件:可编程中断控制器芯片8259A。n每个8259A芯片可以支持8个中断请求信号,如果使用9个8259A芯片(一个主片,8个从片),就可使80X86CPU在单个引脚INTR上接受多达64个中断源的中断请求信号。n 中断类型码8.3 中断nCPU
19、是否响应外设发出中断请求,由两个控制条件决定:一个是标志寄存器(FLAGS)中的IF中断允许标志位决定是否屏蔽可屏蔽中断请求。另一个是该外设的中断请求是否屏蔽,由8259A的中断屏蔽寄存器(IMR)决定。n 中断类型码8.3 中断2.内中断n内中断来自于CPU内部,它包括下列类型:除法出错中断:当CPU执行除法指令DIV或IDIV时,如果除数等于0或者商太大,致使存放商的目标寄存器容纳不下,则产生此中断。中断类型号为0。注意:CPU执行除法指令FDIV时不产生此中断。单步执行中断:为调试程序(DEBUG)设置的中断,中断类型号为1。n 中断类型码8.3 中断断点中断:为调试程序(DEBUG)设
20、置的中断。INT3是一条特别的单字节指令,调试程序(DEBUG)可利用该指令支持程序断点。当由于执行INT3指令进入中断服务程序时,被保存的CS和IP指向紧跟INT3的指令,即INT3后面的字节。本中断不提供中断服务程序,中断类型号为3。溢出中断:只有当OF=1时,正在执行INTO指令才产生中断,否则不产生中断,继续执行INTO后面的指令。在进入溢出中断服务程序时,被保存的CS和IP指向INTO指令的下一条指令。本中断不提供中断服务程序,中断类型号为4。指令中断INT n:用户程序使用的软中断,中断类型号n为10HFFH中的任一个。10H前的部分中断类型号也可使用,但一般很少用到。n 中断向量
21、表8.3 中断n每种中断都用一个中断类型号来表示,每种类型的中断都由相应的中断服务程序来处理。n中断向量表就是各种中断类型的中断服务程序的地址表,占用内存中从00000H003FFH的1K字节地址空间。n中断向量表中的256项中断向量对应256种中断类型,每项占4个字节,存放相应的中断服务程序的入口地址,高字存放入口地址的段地址部分,低字存放入口地址的偏移地址部分。n 中断向量表8.3 中断n 中断向量表8.3 中断n中断操作的5个步骤:(1)取中断类型号;(2)计算中断向量地址;(3)取中断向量,偏移地址送IP,段地址送CS;(4)转入中断服务程序;(5)中断返回到INT指令的下一条指令。n
22、 中断优先级8.3 中断n80X86PC机规定的中断优先级次序:中断类型优先级内中断(0、3、4、软中断)最高NMI中断(2型中断)INTR中断单步中断(1型中断)最低n 中断优先级8.3 中断n在单片的8259A中断系统中,其优先级分为八级,在正常的优先级方式下,优先级次序是IR0,IR1,IR2,IR3,IR4,IR5,IR6,IR7,定时器连接的IR0优先级最高,键盘连接的IR1其次,打印机连接的IR7优先级最低。n在级联的8259A中断系统中,从片的8259A连接到主8259A的哪端上,整个从片的中断请求就具有哪端的中断优先级别。从片内部的中断优先级类似于主片。n 中断优先级8.3 中
23、断n中断嵌套:n当CPU在响应当前的中断请求的过程中,又被其他优先级更高的中断源中断,暂停执行当前正在运行的中断服务程序,转而去进行新的中断处理,这种重叠处理中断的现象叫做中断嵌套。n一个正在执行的中断服务程序,在开中断(IF=1)的情况下,能被优先级高于它的中断源中断。n 中断优先级8.3 中断图8.4 中断处理过程示例n 中断处理过程8.3 中断n当中断发生时,不管是哪种中断源,80X86CPU完成下列动作:1.CPU将标志寄存器内容入栈。2.CPU将远程返回地址推入堆栈:先将当前代码段寄存器(CS)内容入栈,然后将当前指令计数器(IP)内容入栈。3.CPU判别中断源,取中断类型号N,把从
24、中断向量表中地址4N处取得的字内容送IP,取4N+2中的字内容送CS。4.禁止外部中断和单步中断。5.CPU转去执行中断处理程序(又常称为中断服务程序)。n 中断处理过程8.3 中断n当CPU执行完中断服务程序,要返回到原程序断点处时,中断服务程序的结束指令必须是IRET(中断返回)。该指令将远程返回地址和标志寄存器从堆栈中弹出。n 中断处理过程8.3 中断n中断服务程序的组成包括主程序和中断服务子程序两部分n 中断处理过程8.3 中断n主程序必须完成以下工作:(1)设置中断向量。保存原中断向量(INT21H的35H功能),设置新的中断向量(INT21H的25H功能)。(2)设置设备的中断屏蔽
25、位。(3)设置CPU的中断允许位IF(开中断)。(4)在主程序结束之前,恢复原中断向量。n 中断处理过程8.3 中断n中断服务子程序的编写步骤:(1)保存寄存器内容。(2)如允许中断嵌套,开中断(STI)。(3)处理中断。(4)关中断。(5)发送中断结束命令(EOI)给中断命令寄存器。(6)恢复寄存器内容。(7)返回被中断的程序(IRET)。n 中断处理过程8.3 中断设置中断向量有两种方法:n一种是直接在中断向量表中设置某类型的中断服务程序的入口地址;n另一种是使用DOS的系统功能调用。n 中断处理过程8.3 中断n例如,为中断类型N设置中断向量:(方法一)直接在中断向量表中设置中断服务程序
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 汇编语言程序设计 汇编语言 程序设计 输入 输出 中断
限制150内