《汇编语言程序设计》第8章输入、输出与中断.ppt
《《汇编语言程序设计》第8章输入、输出与中断.ppt》由会员分享,可在线阅读,更多相关《《汇编语言程序设计》第8章输入、输出与中断.ppt(99页珍藏版)》请在三一办公上搜索。
1、第八章,输入/输出与中断,第8章输入/输出与中断,8.1 输入/输出8.2 CPU与外设之间的数据传送方式8.3 中断8.4 DOS和BIOS中断调用,第8章输入/输出与中断,8.1 输入/输出8.2 CPU与外设之间的数据传送方式8.3 中断8.4 DOS和BIOS中断调用,8.1 输入/输出,I/O端口编址方式I/O端口寻址方式,I/O端口编址方式,8.1 输入/输出,独立编址:I.O端口有独立的地址空间,CPU使用不同的指令访问内存储器和I.O端口。统一编址:在系统中,内存储器和I.O端口的地址统一安排,二者没有重叠的地址空间,CPU使用相同的指令访问内存储器和I.O端口,由地址来确定访
2、问的是内存储器还是I.O端口。,I/O端口编址方式,8.1 输入/输出,独立编址:硬件系统复杂,但没有占用内存的地址空间。统一编址:硬件系统简单,可以利用丰富的存储器访问指令访问I.O设备,从而提高了程序设计的灵活性,但I.O设备占用了部分地址空间,减少了内存的地址空间。,I/O端口寻址方式,8.1 输入/输出,直接端口寻址间接端口寻址,I/O端口寻址方式,8.1 输入/输出,直接端口寻址IN AL,PORT;PORT端口内容读到AL累加器中IN AX,PORT;PORT+1和PORT端口内容读到AX累加器中OUT PORT,AL;将AL累加器中内容写到PORT端口OUT PORT,AX;将A
3、X累加器中内容写到PORT+1和PORT端口,I/O端口寻址方式,8.1 输入/输出,间接端口寻址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章输入/输出与中断,8.1 输入/输出8.2 CPU与外设之间的数据传送方式8.3 中断8.4 DOS和BIOS中
4、断调用,8.2 CPU与外设之间的数据传送方式,程序控制方式中断处理方式直接存储器存取方式,程序控制方式,8.2 CPU与外设之间的数据传送方式,CPU通过读取端口状态寄存器的标志位来了解外设的工作状态,据此来决定对外设的访问。采用这种方法进行数据传送的方式称为程序控制方式,通常称作(程序)查询方式。,程序控制方式,8.2 CPU与外设之间的数据传送方式,8.1 访问外设的程序控制流程图,程序控制方式,8.2 CPU与外设之间的数据传送方式,在实际应用中,为防止因某种原因造成CPU处于死循环查询状态,可根据通常状态下设备转到就绪状态所需时间或人们的可容忍时间,在程序中设置一预定的循环次数值(超
5、时值),并安排超时检测程序段,如设备在该时间内未转到就绪状态,则CPU从循环查询状态中跳出,防止因为CPU处于死循环查询状态而使访问设备的程序不能正常运行。,程序控制方式,8.2 CPU与外设之间的数据传送方式,程序控制方式,8.2 CPU与外设之间的数据传送方式,例8.1 读微机中实时钟RT.CMOS,把读到的秒、分和时保存到变量中。CMOS RAM中相关各字节的含义见表8.1。,程序控制方式,8.2 CPU与外设之间的数据传送方式,分析:RT/CMOS RAM的状态寄存器A的位7是计时更新标志位,为1表示实时钟正在计时,为0表示实时钟信息可以读出。在读实时钟前,要判别该标志位是否为0。,程
6、序控制方式,8.2 CPU与外设之间的数据传送方式,程序控制方式,8.2 CPU与外设之间的数据传送方式,例8.2 利用查询方式打印一个字符。分析:利用查询方式打印一个字符的流程是:首先输入打印数据,随后读取打印机工作状态信息,判断打印机是否忙;如打印机不忙,向打印机发出选通命令;如打印机忙,则在规定的超时时间段内反复查询打印机工作状态信息,直到打印机不忙或超时结束,跳转到相应处去处理。,程序控制方式,8.2 CPU与外设之间的数据传送方式,程序控制方式,8.2 CPU与外设之间的数据传送方式,查询方式的优点:接口硬件简单、经济,且可用程序安排访问若干个外设的先后次序。查询方式的缺点:CPU与
7、外设只能串行工作,CPU在查询的时间段内只能与一台设备交换信息,且大部分时间处于空闲等待状态,浪费了原本可执行大量指令的时间。,中断处理方式,8.2 CPU与外设之间的数据传送方式,当CPU需要与外设进行数据交换时,向外设发出启动命令,然后CPU不必查询外设的工作状态,而是继续执行主程序。当外设准备就绪可以进行I.O操作时,向CPU发出中断申请,CPU暂停正在执行的程序(中断原程序),转去执行与外设之间的I.O操作,完成操作后即返回,继续执行被中断的程序。这种方式与查询方式相比,大大提高了CPU的工作效率,也提高了整个计算机系统的性能和效率。,直接存储器存取方式,8.2 CPU与外设之间的数据
8、传送方式,中断传送方式可以大大提高CPU的利用率,对磁盘、磁带等块设备、模数转换器(A.D)等高速I.O设备,在批量进行数据交换的情况下(如磁盘与内存间的信息交换),用执行输入输出指令的方法或使用中断方法来传输字节,就显得太慢。为了提高大批量数据传送的效率,引入了直接存储器存取方式(DMA)进行数据传送。通常情况下,系统的地址总线、数据总线及大部分控制总线是由CPU管理的。在采用DMA方式进行数据传送时,CPU让出对总线的控制权,用硬件DMA控制器接管对总线的控制权。在DMA控制器的控制下,不经CPU的干预而直接在外设与内存间进行批量数据的快速传送。,直接存储器存取方式,8.2 CPU与外设之
9、间的数据传送方式,完整的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数据传送。,直接存储器存取方式,8.2 CPU与外设之间的数据传送方式,(3)DMA控制器发出读写命令,直接控制内存与I.O间进行批量数据的快速传送:传输数据的存储器地址(在内存地址计数器中)通过地址总线发出;传输的数据字节在字计数器中;地址计数器
10、自动加l;字计数器自动减1;如字计数器非0,继续进行数据传送。(4)如字计数器变到0,则停止数据传送,向CPU发出中断请求,DMA控制器释放总线控制权,并向I.O接口发出结束信号,DMA数据传送过程结束。,第8章输入/输出与中断,8.1 输入/输出8.2 CPU与外设之间的数据传送方式8.3 中断8.4 DOS和BIOS中断调用,8.3 中断,中断的概念中断类型码中断向量表中断优先级中断处理过程,中断的概念,8.3 中断,中断就是计算机暂停执行当前程序,转而执行更紧急的程序,在执行结束后,自动返回到原程序暂停处继续执行的过程。一般把能够引起中断的事件或能够发出中断请求的来源称为中断源。在808
11、6/8088/80286/80386的中断系统中,最多能够处理256种中断,中断类型码(即中断类型号)为0到255。,中断类型码,8.3 中断,中断的类型:外中断内中断,中断类型码,8.3 中断,1.外中断外中断来自处理机的外部条件,如I.O设备或其他处理机等,以随机出现的方式中断CPU执行的现行程序而转向中断服务程序。外部中断通常用于指示I.O设备的一次操作已完成。外部中断主要有两个来源:一种是非屏蔽中断(NMI),另一种是来自各种外部设备的中断,称为可屏蔽中断。,中断类型码,8.3 中断,80X86有两根引脚INTR和NMI接受外部中断请求信号:IN-TR接受可屏蔽中断请求,NMI接受不可
12、屏蔽中断请求。一根引脚INTR只能直接引入一种外设中断。为了支持更多的外部硬件中断,在系统中采用了硬件:可编程中断控制器芯片8259A。每个8259A芯片可以支持8个中断请求信号,如果使用9个8259A芯片(一个主片,8个从片),就可使80X86CPU在单个引脚INTR上接受多达64个中断源的中断请求信号。,中断类型码,8.3 中断,CPU是否响应外设发出中断请求,由两个控制条件决定:一个是标志寄存器(FLAGS)中的IF中断允许标志位决定是否屏蔽可屏蔽中断请求。另一个是该外设的中断请求是否屏蔽,由8259A的中断屏蔽寄存器(IMR)决定。,中断类型码,8.3 中断,2.内中断内中断来自于CP
13、U内部,它包括下列类型:除法出错中断:当CPU执行除法指令DIV或IDIV时,如果除数等于0或者商太大,致使存放商的目标寄存器容纳不下,则产生此中断。中断类型号为0。注意:CPU执行除法指令FDIV时不产生此中断。单步执行中断:为调试程序(DEBUG)设置的中断,中断类型号为1。,中断类型码,8.3 中断,断点中断:为调试程序(DEBUG)设置的中断。INT3是一条特别的单字节指令,调试程序(DEBUG)可利用该指令支持程序断点。当由于执行INT3指令进入中断服务程序时,被保存的CS和IP指向紧跟INT3的指令,即INT3后面的字节。本中断不提供中断服务程序,中断类型号为3。溢出中断:只有当O
14、F=1时,正在执行INTO指令才产生中断,否则不产生中断,继续执行INTO后面的指令。在进入溢出中断服务程序时,被保存的CS和IP指向INTO指令的下一条指令。本中断不提供中断服务程序,中断类型号为4。指令中断INT n:用户程序使用的软中断,中断类型号n为10HFFH中的任一个。10H前的部分中断类型号也可使用,但一般很少用到。,中断向量表,8.3 中断,每种中断都用一个中断类型号来表示,每种类型的中断都由相应的中断服务程序来处理。中断向量表就是各种中断类型的中断服务程序的地址表,占用内存中从00000H003FFH的1K字节地址空间。中断向量表中的256项中断向量对应256种中断类型,每项
15、占4个字节,存放相应的中断服务程序的入口地址,高字存放入口地址的段地址部分,低字存放入口地址的偏移地址部分。,中断向量表,8.3 中断,中断向量表,8.3 中断,中断操作的5个步骤:(1)取中断类型号;(2)计算中断向量地址;(3)取中断向量,偏移地址送IP,段地址送CS;(4)转入中断服务程序;(5)中断返回到INT指令的下一条指令。,中断优先级,8.3 中断,80X86PC机规定的中断优先级次序:中断类型优先级内中断(0、3、4、软中断)最高NMI中断(2型中断)INTR中断单步中断(1型中断)最低,中断优先级,8.3 中断,在单片的8259A中断系统中,其优先级分为八级,在正常的优先级方
16、式下,优先级次序是IR0,IR1,IR2,IR3,IR4,IR5,IR6,IR7,定时器连接的IR0优先级最高,键盘连接的IR1其次,打印机连接的IR7优先级最低。在级联的8259A中断系统中,从片的8259A连接到主8259A的哪端上,整个从片的中断请求就具有哪端的中断优先级别。从片内部的中断优先级类似于主片。,中断优先级,8.3 中断,中断嵌套:当CPU在响应当前的中断请求的过程中,又被其他优先级更高的中断源中断,暂停执行当前正在运行的中断服务程序,转而去进行新的中断处理,这种重叠处理中断的现象叫做中断嵌套。一个正在执行的中断服务程序,在开中断(IF=1)的情况下,能被优先级高于它的中断源
17、中断。,中断优先级,8.3 中断,图8.4 中断处理过程示例,中断处理过程,8.3 中断,当中断发生时,不管是哪种中断源,80X86CPU完成下列动作:1.CPU将标志寄存器内容入栈。2.CPU将远程返回地址推入堆栈:先将当前代码段寄存器(CS)内容入栈,然后将当前指令计数器(IP)内容入栈。3.CPU判别中断源,取中断类型号N,把从中断向量表中地址4N处取得的字内容送IP,取4N+2中的字内容送CS。4.禁止外部中断和单步中断。5.CPU转去执行中断处理程序(又常称为中断服务程序)。,中断处理过程,8.3 中断,当CPU执行完中断服务程序,要返回到原程序断点处时,中断服务程序的结束指令必须是
18、IRET(中断返回)。该指令将远程返回地址和标志寄存器从堆栈中弹出。,中断处理过程,8.3 中断,中断服务程序的组成包括主程序和中断服务子程序两部分,中断处理过程,8.3 中断,主程序必须完成以下工作:(1)设置中断向量。保存原中断向量(INT21H的35H功能),设置新的中断向量(INT21H的25H功能)。(2)设置设备的中断屏蔽位。(3)设置CPU的中断允许位IF(开中断)。(4)在主程序结束之前,恢复原中断向量。,中断处理过程,8.3 中断,中断服务子程序的编写步骤:(1)保存寄存器内容。(2)如允许中断嵌套,开中断(STI)。(3)处理中断。(4)关中断。(5)发送中断结束命令(EO
19、I)给中断命令寄存器。(6)恢复寄存器内容。(7)返回被中断的程序(IRET)。,中断处理过程,8.3 中断,设置中断向量有两种方法:一种是直接在中断向量表中设置某类型的中断服务程序的入口地址;另一种是使用DOS的系统功能调用。,中断处理过程,8.3 中断,例如,为中断类型N设置中断向量:(方法一)直接在中断向量表中设置中断服务程序的入口地址MOV AX,0MOV ES,AXPUSHFCLIMOV BX,N*4MOV WORD PTR ES:BX,OFFSET INT DEALMOV WORD PTR ES:BX+2,SEG INT DEALPOPFINT DEAL:;中断服务程序 IRET;
20、中断服务程序结束,中断处理过程,8.3 中断,(方法二)DOS系统功能调用(21H)存取中断向量:设置中断向量:把由AL指定的中断类型的中断向量DS:DX放置在中断向量表中入口参数:AH=25HAL=中断类型号DS:DX=中断向量执行:INT21H取中断向量:把由AL指定的中断类型的中断向量从中断向量表中取到ES:BX中入口参数:AH=35HAL=中断类型号执行:INT21H返回值:ES:BX=中断向量,中断处理过程,8.3 中断,例8.3 按要求编写除数为0时的内中断(0型中断)服务程序。要求:程序执行除数为0的除法操作,产生除法出错中断,执行中断服务程序(ISR0)。它显示信息,询问用户是
21、退出程序还是继续运行。若键入“c”要求继续执行程序,则服务程序恢复所有寄存器内容并执行IRET返回主程序,此时除法操作的结果是无效的;若键入“q”要求退出,则使用INT21H的4CH功能从服务程序直接返回DOS。,中断处理过程,8.3 中断,说明:此程序分成两大部分初始化部分和中断处理部分。初始化部分(Init)设置新的0型中断向量,显示一条信息,然后完成终止和驻留后返回到DOS。这种结束并驻留使用INT21H的31H功能,它保留程序所占的内存后退出,使这些内存单元不被后来运行的应用程序破坏。,第8章输入/输出与中断,8.1 输入/输出8.2 CPU与外设之间的数据传送方式8.3 中断8.4
22、DOS和BIOS中断调用,8.4 DOS和BIOS中断调用,DOS(Disk Operating System)MS-DOS(PC-DOS)内包含了许多涉及设备驱动、目录和文件管理等的子程序,DOS的各种功能和命令就是通过调用这些子程序实现的。这些子程序是相对独立的程序模块并有各自的编号。编程人员利用汇编语言可方便地调用这些子程序,减少对系统硬件环境的考虑和依赖,从而精简应用程序的编写,同时又可使程序有良好的通用性。这些编号的可由编程人员调用的子程序就称为DOS功能调用或系统调用。,8.4 DOS和BIOS中断调用,DOS功能调用主要包括三个方面的子程序:基本I.O文件管理其他(包括内存管理、
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 汇编语言程序设计 汇编语言 程序设计 输入 输出 中断
链接地址:https://www.31ppt.com/p-6527958.html