欢迎来到淘文阁 - 分享文档赚钱的网站! | 帮助中心 好文档才是您的得力助手!
淘文阁 - 分享文档赚钱的网站
全部分类
  • 研究报告>
  • 管理文献>
  • 标准材料>
  • 技术资料>
  • 教育专区>
  • 应用文书>
  • 生活休闲>
  • 考试试题>
  • pptx模板>
  • 工商注册>
  • 期刊短文>
  • 图片设计>
  • ImageVerifierCode 换一换

    《汇编语言程序设计》第8章输入、输出与中断.ppt

    • 资源ID:90699563       资源大小:643KB        全文页数:99页
    • 资源格式: PPT        下载积分:11.9金币
    快捷下载 游客一键下载
    会员登录下载
    微信登录下载
    三方登录下载: 微信开放平台登录   QQ登录  
    二维码
    微信扫一扫登录
    下载资源需要11.9金币
    邮箱/手机:
    温馨提示:
    快捷下载时,用户名和密码都是您填写的邮箱或者手机号,方便查询和重复下载(系统自动生成)。
    如填写123,账号就是123,密码也是123。
    支付方式: 支付宝    微信支付   
    验证码:   换一换

     
    账号:
    密码:
    验证码:   换一换
      忘记密码?
        
    友情提示
    2、PDF文件下载后,可能会被浏览器默认打开,此种情况可以点击浏览器菜单,保存网页到桌面,就可以正常下载了。
    3、本站不支持迅雷下载,请使用电脑自带的IE浏览器,或者360浏览器、谷歌浏览器下载即可。
    4、本站资源下载后的文档和图纸-无水印,预览文档经过压缩,下载后原文更清晰。
    5、试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓。

    《汇编语言程序设计》第8章输入、输出与中断.ppt

    第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端口,由地址来确定访问的是内存储器还是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累加器中内容写到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中断调用8.2 CPU与外设之间的数据传送方式n程序控制方式n中断处理方式n直接存储器存取方式n 程序控制方式8.2 CPU与外设之间的数据传送方式nCPU通过读取端口状态寄存器的标志位来了解外设的工作状态,据此来决定对外设的访问。采用这种方法进行数据传送的方式称为程序控制方式,通常称作(程序)查询方式。n 程序控制方式8.2 CPU与外设之间的数据传送方式8.1 访问外设的程序控制流程图n 程序控制方式8.2 CPU与外设之间的数据传送方式n在实际应用中,为防止因某种原因造成CPU处于死循环查询状态,可根据通常状态下设备转到就绪状态所需时间或人们的可容忍时间,在程序中设置一预定的循环次数值(超时值),并安排超时检测程序段,如设备在该时间内未转到就绪状态,则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 程序控制方式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 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日期日期.时间不可读时间不可读;跳回跳回CHECKCHECK处继续检测处继续检测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;读时值读时值MOV HRMOV HR,AL;AL;保存时值保存时值n 程序控制方式8.2 CPU与外设之间的数据传送方式n例8.2 利用查询方式打印一个字符。n分析:利用查询方式打印一个字符的流程是:首先输入打印数据,随后读取打印机工作状态信息,判断打印机是否忙;如打印机不忙,向打印机发出选通命令;如打印机忙,则在规定的超时时间段内反复查询打印机工作状态信息,直到打印机不忙或超时结束,跳转到相应处去处理。n 程序控制方式8.2 CPU与外设之间的数据传送方式;入口参数入口参数:AL=:AL=要打印字符的要打印字符的ASCIIASCII码,码,BL=BL=超时参数,即规定查询的次数超时参数,即规定查询的次数;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 CX,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 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;清除超时标志、清除忙标志清除超时标志、清除忙标志JIESHU:JIESHU:RETRETPRINT ENDPPRINT ENDPn 程序控制方式8.2 CPU与外设之间的数据传送方式n查询方式的优点:接口硬件简单、经济,且可用程序安排访问若干个外设的先后次序。n查询方式的缺点:CPU与外设只能串行工作,CPU在查询的时间段内只能与一台设备交换信息,且大部分时间处于空闲等待状态,浪费了原本可执行大量指令的时间。n 中断处理方式8.2 CPU与外设之间的数据传送方式n当CPU需要与外设进行数据交换时,向外设发出启动命令,然后CPU不必查询外设的工作状态,而是继续执行主程序。当外设准备就绪可以进行I.O操作时,向CPU发出中断申请,CPU暂停正在执行的程序(中断原程序),转去执行与外设之间的I.O操作,完成操作后即返回,继续执行被中断的程序。n这种方式与查询方式相比,大大提高了CPU的工作效率,也提高了整个计算机系统的性能和效率。n 直接存储器存取方式8.2 CPU与外设之间的数据传送方式n中断传送方式可以大大提高CPU的利用率,对磁盘、磁带等块设备、模数转换器(A.D)等高速I.O设备,在批量进行数据交换的情况下(如磁盘与内存间的信息交换),用执行输入输出指令的方法或使用中断方法来传输字节,就显得太慢。为了提高大批量数据传送的效率,引入了直接存储器存取方式(DMA)进行数据传送。n通常情况下,系统的地址总线、数据总线及大部分控制总线是由CPU管理的。在采用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 直接存储器存取方式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中断类型码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设备的一次操作已完成。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是否响应外设发出中断请求,由两个控制条件决定:一个是标志寄存器(FLAGS)中的IF中断允许标志位决定是否屏蔽可屏蔽中断请求。另一个是该外设的中断请求是否屏蔽,由8259A的中断屏蔽寄存器(IMR)决定。n 中断类型码8.3 中断2.内中断n内中断来自于CPU内部,它包括下列类型:除法出错中断:当CPU执行除法指令DIV或IDIV时,如果除数等于0或者商太大,致使存放商的目标寄存器容纳不下,则产生此中断。中断类型号为0。注意:CPU执行除法指令FDIV时不产生此中断。单步执行中断:为调试程序(DEBUG)设置的中断,中断类型号为1。n 中断类型码8.3 中断断点中断:为调试程序(DEBUG)设置的中断。INT3是一条特别的单字节指令,调试程序(DEBUG)可利用该指令支持程序断点。当由于执行INT3指令进入中断服务程序时,被保存的CS和IP指向紧跟INT3的指令,即INT3后面的字节。本中断不提供中断服务程序,中断类型号为3。溢出中断:只有当OF=1时,正在执行INTO指令才产生中断,否则不产生中断,继续执行INTO后面的指令。在进入溢出中断服务程序时,被保存的CS和IP指向INTO指令的下一条指令。本中断不提供中断服务程序,中断类型号为4。指令中断INT n:用户程序使用的软中断,中断类型号n为10HFFH中的任一个。10H前的部分中断类型号也可使用,但一般很少用到。n 中断向量表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 中断优先级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 中断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,把从中断向量表中地址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)设置设备的中断屏蔽位。(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设置中断向量:(方法一)直接在中断向量表中设置中断服务程序的入口地址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 ;中断服务程序结束n 中断处理过程8.3 中断(方法二)DOS系统功能调用(21H)存取中断向量:设置中断向量:把由AL指定的中断类型的中断向量DS:DX放置在中断向量表中入口参数:AH=25HAL=中断类型号DS:DX=中断向量执行:INT21H取中断向量:把由AL指定的中断类型的中断向量从中断向量表中取到ES:BX中入口参数:AH=35HAL=中断类型号执行:INT21H返回值:ES:BX=中断向量n 中断处理过程8.3 中断n例8.3 按要求编写除数为0时的内中断(0型中断)服务程序。要求:程序执行除数为0的除法操作,产生除法出错中断,执行中断服务程序(ISR0)。它显示信息,询问用户是退出程序还是继续运行。若键入“c”要求继续执行程序,则服务程序恢复所有寄存器内容并执行IRET返回主程序,此时除法操作的结果是无效的;若键入“q”要求退出,则使用INT21H的4CH功能从服务程序直接返回DOS。n 中断处理过程8.3 中断n说明:此程序分成两大部分初始化部分和中断处理部分。初始化部分(Init)设置新的0型中断向量,显示一条信息,然后完成终止和驻留后返回到DOS。这种结束并驻留使用INT21H的31H功能,它保留程序所占的内存后退出,使这些内存单元不被后来运行的应用程序破坏。第8章输入/输出与中断q8.1 输入/输出q8.2 CPU与外设之间的数据传送方式q8.3 中断q8.4 DOS和BIOS中断调用8.4 DOS和BIOS中断调用nDOS(Disk Operating System)nMS-DOS(PC-DOS)内包含了许多涉及设备驱动、目录和文件管理等的子程序,DOS的各种功能和命令就是通过调用这些子程序实现的。这些子程序是相对独立的程序模块并有各自的编号。编程人员利用汇编语言可方便地调用这些子程序,减少对系统硬件环境的考虑和依赖,从而精简应用程序的编写,同时又可使程序有良好的通用性。这些编号的可由编程人员调用的子程序就称为DOS功能调用或系统调用。8.4 DOS和BIOS中断调用DOS功能调用主要包括三个方面的子程序:n基本I.On文件管理n其他(包括内存管理、置取时间、置取中断向量、终止程序等)8.4 DOS和BIOS中断调用nIBMBIO.COM是一个输入.输出设备处理程序,它提供了DOS到ROM BIOS的低级接口,完成将数据从外设读入内存,或把数据从内存写到外设去的工作。nIBMDOS.COM包括一个文件管理程序和一些处理程序,在DOS下运行的程序可以调用这些处理程序。为了完成DOS功能调用,IBMDOS.COM把信息传送给IBMBIO.COM,形成一个或多个BIOS调用。nDOS建立在BIOS的基础之上,通过BIOS控制硬件。8.4 DOS和BIOS中断调用图8.5 应用程序、DOS、BIOS和外设接口之间的关系8.4 DOS和BIOS中断调用n编程时常用的DOS中断调用:INT20H程序终止INT21H功能调用:键盘I.O(AH=1、6、7、8、A、B、C)显示器I.O(AH=2、6、9)打印机I.O(AH=5)串行通信I.O(AH=3、4)8.4 DOS和BIOS中断调用nDOS中断类型20程序终止27结束并驻留内存21功能调用28键盘忙循环22终止地址29快速写字符23Ctrl_C中断向量2A网络接口24严重错误向量2E执行命令25绝对磁盘读2F多路转接接口26绝对磁盘写303F保留给DOS8.4 DOS和BIOS中断调用nBIOS是系统提供的基本输入输出例行程序,它直接建立在硬件基础之上,一般以在硬件系统中主板上的ROM-BIOS(或EPROM、EEPROM)芯片形式出现。在存储器系统中,从地址0FE000H开始的8K ROM(只读存储器)中装有BIOS(Basic Iuput.Output System)例行程序。8.4 DOS和BIOS中断调用n调用DOS或BIOS功能的几个基本步骤进行:(1)将调用参数装入指定的寄存器;(2)将功能号装入AH;(3)如需子功能号,把它装入AL;(4)按中断号调用DOS或BIOS中断;(5)检查返回参数是否正确。8.4 DOS和BIOS中断调用n常用的BIOS中断调用:INT10H显示器I/OINT14H串行口I/OINT11H取设备信息INT16H键盘I/OINT13H磁盘I/OINT17H打印机I/O8.4 DOS和BIOS中断调用图8.6 BIOS中断和DOS中断的关系8.4 DOS和BIOS中断调用n键盘中断n显示中断n磁盘文件存取中断n 键盘中断8.4 DOS和BIOS中断调用n系统通过两类键盘中断程序与键盘发生关联:一类是硬件中断程序中断09H;另一类是软件中断程序中断16H。硬中断09H由按键动作引起,负责把键盘扫描码及ASCII码存入键盘缓冲区。软中断16H由应用程序调用,从键盘缓冲区取出按键产生的扫描码及ASCII码。n 键盘中断8.4 DOS和BIOS中断调用n当用户按键时,键盘接口会得到该按键的键盘扫描码,同时产生一个中断请求。如果键盘中断是允许的(中断屏蔽字中的Bbit1为0),并且CPU处于开中断状态(IF=1),那么CPU通常就会响应中断请求,转入键盘硬件中断例行程序中断09H的中断服务程序。n键盘中断服务程序首先从键盘接口取得代表被按键的扫描码,然后根据扫描码判别用户所按的键并做相应的处理。n 键盘中断8.4 DOS和BIOS中断调用1.键盘缓冲区n键盘缓冲区是一个容量为16个字的先进先出的环行队列,其结构和占用的内存区域如下:BUFF HEAD DW?;0040:001AHBUFF TAIL DW?;0040:001CHKB BUFFER DW 16 DUP(?);0040:001EH-003DHnBUFF HEAD和BUFF TAIL是缓冲区的头指针和尾指针,当这两个指针相等时,表示缓冲区为空。由于缓冲区本身长16个字,而存放一个键的扫描码和对应的ASCII码需要占用一个字,因此,键盘缓冲区可实际存放15个键的扫描码和ASCII码。键盘中断服务程序把所键入的字符键或功能键的扫描码和对应的ASCII码(如为功能键,对应的ASCII码理解为0)依次存入键盘缓冲区。如缓冲区已满,则不再存入,而发出“嘟”的一声。n 键盘中断8.4 DOS和BIOS中断调用2.键盘I.O程序的功能和调用方法nROM-BIOS的键盘I/O程序以16H号中断服务程序的形式存在,它属于软中断服务程序,供高层的应用程序调用。它与硬中断09H的关系如上所述,是通过键盘缓冲区这个媒介物来传递扫描码及ASCII码。n在调用键盘I/O程序时,把功能编号置入AH寄存器,然后发出中断指令“INT16H”。调用返回后,从有关寄存器中取得出口参数。n 键盘中断8.4 DOS和BIOS中断调用表8.2 INT16H中断服务程序的基本功能n 键盘中断8.4 DOS和BIOS中断调用n例8.4 编制程序,完成如下功能:读键盘,把所按键显示出来,检测到按SHIFT键时,程序结束。n调用键盘I.O程序的2号功能取得变换键状态字节,进而判断是否按下了SHIFT键。在调用0号功能读键盘之前,先调用2号功能判断键盘是否有键可读,否则会导致不能及时检测到用户按下的SHIFT键。n 键盘中断8.4 DOS和BIOS中断调用TITLE READKEY.ASM L SHIFT=00000010BTITLE READKEY.ASM L SHIFT=00000010BR SHIFT=00000001BR SHIFT=00000001BCODE SEGMENTCODE SEGMENTASSUME CS:CODEASSUME CS:CODE,DS:CODEDS:CODESTART:START:MOV AXMOV AX,CODECODEMOV DSMOV DS,AXAXMOV AHMOV AH,2 ;2 ;取变换键状态字节取变换键状态字节INT 16HINT 16HTEST ALTEST AL,L SHIFT+R SHIFT;L SHIFT+R SHIFT;检测是否按下检测是否按下ShiftShift键键JNZ JIESHU;JNZ JIESHU;如按下,转到如按下,转到JIESHUJIESHUMOV AHMOV AH,1;1;是否有键可读是否有键可读INT 16HINT 16HJZ START;JZ START;无键可读,转到无键可读,转到STARTSTARTMOV AHMOV AH,0;0;读键读键INT 16HINT 16HMOV DLMOV DL,AL;AL;显示所读键显示所读键MOV AHMOV AH,6 6INT 21HINT 21HJMP START;JMP START;继续继续JIESHU:MOV AHJIESHU:MOV AH,4CH;4CH;按下按下ShiftShift键时转到此处结束键时转到此处结束INT 21HINT 21HCODE ENDSCODE ENDSEND START 3.DOSEND START 3.DOS键盘功能调用键盘功能调用n 键盘中断8.4 DOS和BIOS中断调用n3.DOS键盘功能调用n 键盘中断8.4 DOS和BIOS中断调用表8.3 DOS21H中的键盘功能调用 n 键盘中断8.4 DOS和BIOS中断调用n例8.5 编程完成如下功能:利用系统功能调用,将键盘输入的小写字母转换成大写字母,并输出显示,直到输入字符时停止输出。n 键盘中断8.4 DOS和BIOS中断调用TITLE TOUPCASE.ASMTITLE TOUPCASE.ASMCODE SEGMENTCODE SEGMENTASSUME CS:CODEASSUME CS:CODE,DS:CODEDS:CODESTART:START:MOV AXMOV AX,CODECODEMOV DSMOV DS,AXAXMOV AHMOV AH,07H07HLA1:LA1:INT 21HINT 21HCMP ALCMP AL,JZ JIESHUJZ JIESHUCMP ALCMP AL,zzJA LA1JA LA1CMP ALCMP AL,aaJB LA1JB LA1SUB ALSUB AL,32;32;小写字符小写字符ASCIIASCII码值比大写字符码值比大写字符ASCIIASCII码值大码值大3232MOV AHMOV AH,02H02HMOV DLMOV DL,ALALINT 21HINT 21HMOV AHMOV AH,07H07HJMP LA1JMP LA1JIESHU:JIESHU:MOV AHMOV AH,4CH;4CH;输入输入字符时转到此处结束字符时转到此处结束INT 21HINT 21HCODE ENDSCODE ENDSEND STARTEND STARTn 显示中断8.4 DOS和BIOS中断调用1.文本显示方式2.显示属性3.显示存储区(显存)4.显示I.O程序的功能和调用方法5.DOS显示功能调用n 显示中断8.4 DOS和BIOS中断调用1.文本显示方式n80列25行n左上角的坐标为(0,0),右下角的坐标是(79,24)n每个字符在存储器中由两个连续的字节表示,一个字节保存ASCII码,另一个字节保存字符的属性。n 显示中断8.4 DOS和BIOS中断调用2.显示属性n在单色显示方式下,显示属性定义了闪烁、反相和高亮度等显示特性。n在彩色显示方式下,属性还定义了前景色和背景色。n 显示中断8.4 DOS和BIOS中断调用图8.7 彩色显示属性字节各位的定义n 显示中断8.4 DOS和BIOS中断调用3.显示存储区(显存)n通常为显示存储器安排的存储地址空间是0B8000H(彩显卡)或0B0000H(黑白显卡),对应的内存区域就称为显示缓冲区。n文本显示模式下,屏幕的每一个显示位置依次对应显示存储区中的两个字节。n 显示中断8.4 DOS和BIOS中断调用n 显示中断8.4 DOS和BIOS中断调用n在屏幕的左上角以黑底白字显示字符“a”:MOV AX,0B800HMOV DS,AXMOV BX,0MOV AL,aMOV AH,07HMOV BX,AXn取得屏幕右下角所显示字符的代码及属性:MOV AX,0B800HMOV DS,AXMOV BX,(80*24+79)*2MOV AX,BXn 显示中断8.4 DOS和BIOS中断调用4.显示I.O程序的功能和调用方法n利用直接写屏方法,程序可实现快速显示。但编程较复杂,并且最终的程序也与显示适配卡相关。所以,一般不采用直接写屏方法,而是调用BIOS提供的显示I.O程序INT10H中断服务程序。n 显示中断8.4 DOS和BIOS中断调用n例8.6 编制程序,调用显示I.O程序(INT10H BIOS中断程序)完成如下功能:在屏幕中间部位开出一个窗口,然后等待用户按键,把按键字符显示在窗口的最底行,当窗口底行显示满时,窗口内容就向上滚动一行;用户按Ctrl+C键时,结束运行。n 显示中断8.4 DOS和BIOS中断调用n5.DOS显示功能调用表8.7 DOS21H中的显示功能调用n 磁盘文件存取中断8.4 DOS和BIOS中断调用n文件就是存放在磁盘上的程序或数据。文件操作是编程中经常要用到的功能,读取运行参数、保存运行结果等都需要用到文件操作。nDOS提供了两套文件管理方式:文件控制块方式(FCB-File Control Block)和文件句柄方式。n 磁盘文件存取中断8.4 DOS和BIOS中断调用1.磁盘文件管理系统功能调用2.BIOS磁盘I.O程序的功能和调用方法3.中断INT13H的扩展功能4.绝对磁盘读写INT25H和INT26Hn 磁盘文件存取中断8.4 DOS和BIOS中断调用1.磁盘文件管理系统功能调用nDOS提供的磁盘文件管理系统功能调用包括传统的文件管理及扩充的文件管理两部分。功能号39H以前的属于传统的文件管理,其余的属于扩充的文件管理。n传统的文件管理系统功能调用要用到内存中的两个数据区:文件控制块(FCB)和磁盘传输区(DTA)。FCB功能使程序员能够生成、打开、关闭和删除文件,并在这种文件的任意记录处读写记录。n 磁盘文件存取中断8.4 DOS和BIOS中断调用nFCB功能操作的缺点:(1)FCB占用用户内存空间。(2)FCB不支持树状文件结构(不可访问当前目录以外的文件)。(3)FCB不能提供网络环境下的文件锁定/共享或记录锁定功能。(4)使用FCB的文件读、写功能需要操作文件控制块以设置记录大小和记录号,除读、写调用本身以外,还要加上单独的MS-DOS功能调用去建立DTA地址。(5)对于包含可变长度记录的文件,使用FCB作随机记录I.O非常不方便。(6)用于访问或生成带特殊属性(如隐式、只读或系统)文件的扩展文件控制块与CP.M不兼容。(7)FCB文件功能出错报告能力很差。(8)Microsoft不推荐使用类CP.M的调用。n 磁盘文件存取中断8.4 DOS和BIOS中断调用n扩充的文件管理系统功能调用从功能号39H开始,它是在DOS2.0及以后的版本中实现的,不再采用文件控制块(FCB),而使用文件句柄方式进行文件管理。n使用句柄功能时,数据结构由操作系统在其拥有的内存空间中维护,应用程序不可访问。n句柄功能完全支持树形目录结构的文件系统,允许程序员在任意磁盘驱动器中的任何子目录中生成、关闭、打开文件,并在这类文件中的任意字节处读、写任意大小的记录。n 磁盘文件存取中断8.4 DOS和BIOS中断调用n使用扩充的文件管理系统功能调用,可给MS-DOS传送一个具有完整路径名(Path Name)的文件名字符串来打开或生成文件。该字符串给出了文件在树状文件结构中的位置(完整路径名)、文件名、扩展名,并且要以00H字节结束,该文件名字符串被称为ASCII-Z字符串。n接收到该文件名字符串后,MS-DOS返回一个16Bit的文件句柄,由应用程序保存并在后面的操作中用它来指定文件。n对于每一个打开的文件,系统功能调用还为其管理一个读写指针(Read.Write Pointer),读写指针总是指向文件中下一次要访问的字节位置,这个读写指针可以移动到文件的任意位置,能满足随机访问的要求。n 磁盘文件存取中断8.4 DOS和BIOS中断调用n使用句柄功能调用并发打开的文件及设备数受两个因素制约:n一是系统中可并发打开的文件的最大数,该最大数的值在CONFIG.SYS文件中由FILES=nn指定,如未指定则由DOS操作系统默认值决定;n另一个是单个进程并发打开文件的最大数是20,前提是系统文件打开表中尚有充足的项数可用。n程序装入时,这20个句柄中的5个预先分配给了标准设备。标准设备不必打开就可直接使用它们的文件句柄,因为DOS已经预定义了它们的文件句柄:0=标准输入设备;1=标准输出设备;2=标准错误输出设备;3=标准辅助设备;4=标准打印设备。n 磁盘文件存取中断8.4 DOS和BIOS中断调用n使用文件句柄方式进行文件管理的优缺点:n优点:(1)句柄功能调用对于标准输入/输出设备提供I.O重定向和管道的直接支持。(2)句柄功能调用对树形目录结构的文件系统及特殊文件属性提供直接支持。(3)句柄功能调用支持网络环境下的文件共享.锁定和记录锁定。(4)使用句柄功能调用,程序员可把字符设备作为文件来使用。(5)句柄功能调用使对文件的随机记录访问非常方便。(6)句柄功能调用在MS-DOS下有较好的出错报告能力,在高版本下又得到进一步加强。(7)Microsoft公司推荐使用句柄功能调用,便于程序与将来的MS-DOS环境兼容。n缺点:可并发打开的文件数受限制。n 磁盘文件存取中断8.4 DOS和BIOS中断调用n使用句柄功能调用访问文件的一

    注意事项

    本文(《汇编语言程序设计》第8章输入、输出与中断.ppt)为本站会员(wuy****n92)主动上传,淘文阁 - 分享文档赚钱的网站仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知淘文阁 - 分享文档赚钱的网站(点击联系客服),我们立即给予删除!

    温馨提示:如果因为网速或其他原因下载失败请重新下载,重复下载不扣分。




    关于淘文阁 - 版权申诉 - 用户使用规则 - 积分规则 - 联系我们

    本站为文档C TO C交易模式,本站只提供存储空间、用户上传的文档直接被用户下载,本站只是中间服务平台,本站所有文档下载所得的收益归上传人(含作者)所有。本站仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。若文档所含内容侵犯了您的版权或隐私,请立即通知淘文阁网,我们立即给予删除!客服QQ:136780468 微信:18945177775 电话:18904686070

    工信部备案号:黑ICP备15003705号 © 2020-2023 www.taowenge.com 淘文阁 

    收起
    展开