




已阅读5页,还剩9页未读, 继续免费阅读
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
第六章 输入/输出和中断前面已经讲过有关输入/输出的问题,主要是用DOS中断调用INT 21H来完成键盘输入以及屏幕显示。对于计算机来说,仅有这种输入/输出还不够,因为DOS的中断调用无法实现对其它外设的控制。关于如何用汇编程序实现主机与外设之间的信息交换,将是本章的主要内容。6.1 I/O设备与数据传送方式一. 主机与外设之间数据的传送方式计算机与外设之间传送数据有如下4中方式:1. 无条件传送方式:适合于CPU与外设同步的情况。直接传送,高速外设与主机之间数据传送。2. 查询传送方式:适合于低速外设与主机之间数据传送。3. 中断传送方式:适合于低速外设与主机之间数据传送。4. 直接存贮器(又称DMA)传送方式:适合于高速外存与主机的数据传送。其中:无条件传送和查询传送,直接在端口上利用IN和OUT指令传送数据。中断传送:在DOS及BIOS层上通过系统功能调用的中断指令实现。直接存贮方式:在端口上,采用通道技术实现。在计算机准备好接收,外设准备好传送数据时,外设向CPU发一个请求DMA传送信号,此时CPU让出总线控制权,使外设与主存在短时间内成批传送数据。二. 外设与主机传送的接口与信息1. 端口与接口计算机的外设都是通过接口连接到系统上,每个接口由一组寄存器组成,寄存器都有一个称为I/O端口的地址编码。也就是,每一台外设都通过硬件接口与主机端口相连,并交换信息。主机外设CPU内存I/O存贮空间(端口)接口I/O操作接口的组成:设备状态寄存器、设备控制寄存器、数据寄存器。上述寄存器在I/O空间中都有固定编码。I/O端口的地址空间:允许设置64K个8位端口或32K个16位端口。对I/O空间的访问用IN或OUT两个指令。I/O端口地址分配,可以查手册。如:40H43H时钟/定时器,60H63H为8255通讯芯片的接口。2. 外设与主机的信息交换传送的信息分为三类: 控制信息:CPU把控制信息从端口输出到对应外设接口的控制寄存器中,告诉外设应做什么。 状态信息:把外设的状态寄存器中的内容送到对应的端口中,以便CPU了解外设状态。 数据信息:需要交换的数据(8位、16位)。6.2 程序直接控制I/O方式直接I/O方式有两种: 无条件传送方式:不查询外设状态寄存器的状态,直接用IN或OUT指令实现CPU与外设信息传送。该方式的特点是:CPU与外设必须同步工作。 查询传送方式:查询外设状态和控制寄存器中的内容,确定是否传送。特点:CPU与外设不同步。一. IN和OUT指令通过前面的学习,我们已经知道,外设与主机传送信息,必须用IN和OUT指令。OUTIN外设主机1. 输入指令IN功能:从外设寄存器取信息送入AX或AL。4种形式:IN AL, PORT功能:(PORT)ALIN AX, PORT功能:(PORT+1,PORT)AXIN AL, DX功能:(DX)ALIN AX, DX功能:(DX)AX由AL或AX决定取几个端口的内容。2. 输出指令OUT功能:将AX或AL内容送到外设寄存器中。4种形式:OUT PORT, AL功能:(AL)PORTOUT PORT, AX功能:(AX)PORT(2个8位口)OUT DX, AL功能:(AL)DXOUT DX, AX功能:(AX)DX同样,由AL或AX决定送到几个端口。如:IN AL, 40HOUT 80H, ALMOV DX, 379HIN AL, DX注意:端口地址255,就放到DX中。二. 程序直接控制传送方式1. 无条件传送方式特点:不查询外设状态,直接用IN和OUT指令传送信息。采用这种方式,必须保证外设与CPU在传送数据的过程中,具有相同速度(同步)。例:扬声器发声程序。已知扬声器的控制寄存器的端口地址为61H,硬件结构如下:端口61H071/00控制其它外设2号定时器门控与门放大器扬声器程序通过I/O指令,使设备控制寄存器的b1位为0或1(交替为0或1),与门的输入为0和1交替的电信号,输出为一个脉冲电流,经放大后,送扬声器使之发声。STACKSEGMENT STACKDB 200 DUP(0)STACKENDSCODESEGMENTASSUME CS:CODE, SS:STACKBEGIN:MOV DX, 100; 开关次数100IN AL, 61HAND AL, 1111 1100B; 最低2位变为0S1:XOR AL, 2; 第1次b1为0,第2次b1为1OUT 61H, ALMOV CX, 140H; 延时一段时间(声音频率)WAIT1:LOOP WAIT1DEC DXJNE S1MOV AH, 4CHINT 21HCODEENDSEND BEGIN2. 查询传送方式特点:查询外设状态,条件满足时传送。适合于低速外设与CPU传送信息。 输入输入之前,查询数据是否准备好,若准备好则输入,否则等待。流程:YN输入的状态信息准备好?输入数据例:串行通讯I/O。串行通讯端口:采用8250芯片,数据寄存器端口地址为3F8H,状态寄存器端口地址为3FDH,其中b0位是输入数据数据准备位,b5位是输出数据准备位。串行口输入程序:C_INPROC FARPUSH DXMOV DX, 3FDHC1:IN AL, DX; 读入状态TEST AL, 01H; 测试b0位,b0=1,数据准备好JZ C1MOV DX, 3F8HIN AL, DX; 接收一个字符POP DXRETC_INENDP 输出输出之前,要查询外设是否“忙”,若“忙”则等待,否则输出数据。YN输入的状态信息外设忙?输出数据流程:例:串行口输出子程序。C_OUTPROC FARPUSH DXPUSH AXMOV DX, 3FDHC2:IN AL, DX; 读入状态TEST AL, 20H; 测试b5位,b5=1,准备好接收JZ C2POP AXMOV DX,3F8HOUT DX, AL; 输出一个字符POP DXRETC_OUTENDP查询方式的缺点:CPU反复等待状态位,浪费大量CPU资源。6.3 中断传送方式为了解决查询方式下,CPU等待外设,浪费大量CPU资源的问题,提出了中断传送方式。引入中断之后,有如下优点: 提高CPU效率 可以处理突发事件 提高了计算机工作的灵活性在中断方式下,程序设计的主要任务:设置中断向量、编制中断处理程序。一. 中断的概念中断是一种使CPU中止正在执行的程序,而转去处理特殊事件的操作,处理结束之后,又返回到断点处继续往下执行。中断的处理过程:中断请求、中断响应、中断处理、中断返回。中断系统:实现中断的软硬件设施。其中,硬件有:8259A、中断源、中断请求等。软件有:中断向量表、中断处理程序。二. 中断源(内中断/外中断)l 内中断来自CPU内部事件: 程序中使用的INT指令产生的中断; CPU的某些错误结果产生的中断(除法、溢出、单步)。内中断的处理特点: 中断类型号一般在指令中; 不受中断允许标志位IF的影响。l 外中断由外设控制器、协处理器等CPU以外的事件引起的中断,称为外中断。外中断的处理特点: 中断类型号由8259A提供,或由自制电路来提供; 受中断允许标志位IF的影响(IF=1,响应中断)。8086/8088中断源:NMIIR0INTRF89不可屏蔽中断请求中断逻辑除法出错溢出中断软中断单步中断中断控制器8259A系统定时器键盘打印机IR7CPU可屏蔽中断不可屏蔽中断请求由硬件故障引起:掉电、存贮器错、总线奇偶校验错等。8086系统中断优先级:高低除法错、INTO(溢出中断指令)、“INT n”单步中断NMIINTR其中,“INT n”可处理256种中断,n的范围:BIOS中断:10H1FHDOS中断:20H3FH自由中断:40HFFH三. 中断向量表1. 中断向量表的结构中断向量表就是各种中断类型的处理程序的入口地址表。内存中从00000H003FFH用于存放中断向量表。中断类型:0FFH,每个类型的中断占4个字节。如:INT 4AH中断向量地址 = 4AH*4 = 128H中断处理F000:18050:12BH0:12AH0:129H0:128H051800F0IPCSDEBUG执行后,用D命令查看:D0:0执行INT 4AH时:IP=1805HCS=F000HIRET2. 中断类型号的获取(1) 除法错、单步中断、不可屏蔽中断NMI、断点中断、溢出中断(中断号04)。中断类型号由CPU芯片内的部件自动提供。(2) 软中断INT n,执行时从指令流中读出类型号。(3) 外中断 标准外设,利用8259A提供的类型号; 非标准外设,自制电路通过接口提供给总线,获得类型号。3. 设置或取出中断向量指令(1) 设置中断向量指令功能:把由AL指定的中断类型的中断向量DS:DX放入中断向量表中。(AH)=25H(AL)=中断类型号DS:DX=中断向量INT 21H(2) 取出中断向量指令功能:把AL中指定的中断类型的中断向量从中断向量表中取出送到ES:DX中。(AH)=35H(AL)=中断类型号INT 21H四. 软中断及中断的有关指令1. 软中断形式:INT n功能: (FLAGS)(SP)同时0IF、TF (CS)(SP)(4*n+2)CS (IP)(SP)(4*n)IP2. 中断返回形式:IRET。功能: (SP)IP (SP)CS (SP)FLAGS五. 举例在系统定时器(中断类型为8)的中断处理程序中,有一条中断指令INT 1CH,时钟中断每发生一次(约每秒18.2次),都要调用一次中断类型为1CH的处理程序,1CH的处理程序只有一条IRET指令,实际上什么工作也不做,只是为用户提供一个中断号。如果有一个定时要完成的工作,就可以利用1CH中断来完成。如:编写一个中断处理程序,要求在主程序运行过程中,每隔10秒钟响铃一次,同时显示“The bell is ring!”。1CH为用户的中断类型,可能被其它程序所引用,因此对于一个新的中断程序,必须做如下工作: 主程序初始化部分,先保存当前中断向量表的内容; 在主程序结束部分,恢复保存的1CH向量。程序:DATASEGMENTCONDW 1MESSDB The bell is ring!, 0DH, 0AH, $DATAENDSCODESEGMENTASSUME CS:CODE, DS:DATABEGIN:MOV AX, DATAMOV DS, AXMOV AL, 1CH; 得到1CH中断向量MOV AH, 35HINT 21HPUSH ES; ES:BX中断向量PUSH BXPUSH DSMOV DX, OFFSET RINGMOV AX, SEG RINGMOV DS, AXMOV AL, 1CH; 置新中断向量DS:DXMOV AH, 25HINT 21HPOP DSIN AL, 21H; 21H口为中断屏蔽寄存器AND AL, 1111 1110B; b0=0允许时钟中断OUT 21H, ALSTI; 开中断。以上可用INT 27驻留MOV DI, 2000; 等待。应该不止10秒钟L1:MOV SI, 3000L2:DEC SIJNZ L2DEC DIJNZ L1POP DXPOP DSMOV AL, 1CH;恢复旧中断向量DS:DXMOV AH, 25HINT 21HMOV AH, 4CH; 结束INT 21HRINGPORC NEARPUSH DS; 保护寄存器PUSH AXPUSH CXPUSH DXMOV AX, DATAMOV DS, AXSTI; 开中断。其它中断也能响应DEC CONJN
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 培训课程毕业总结
- 地埋式箱泵施工方案
- 2026届内蒙古磴口县化学九上期末学业水平测试试题含解析
- 中介月度工作总结
- 2026届九江市重点中学化学九上期末考试模拟试题含解析
- 2026届-度河北省正定县化学九上期中综合测试模拟试题含解析
- 形体矫正培训课件
- 沥青摊铺安全规范
- 山东省济南市2026届化学九上期中质量跟踪监视模拟试题含解析
- 企业工作总结培训
- 班级小法庭培训课件
- 前交叉韧带损伤治疗讲课件
- 电销公司风控管理制度
- 部编版九年级历史上册第19课法国大革命和拿破仑帝国 课件(内嵌视频)
- 髋关节置换术后讲课件
- 2025至2030年中国环保胶黏剂行业市场运行格局及产业需求研判报告
- 人才画像管理制度
- 胖东来导购管理制度
- DeepSeek+AI大模型赋能制造业智能化供应链解决方案
- 医院夜晚值班期间火灾应急预案(3篇)
- 探究车用锂离子动力电池热失控的引发机制、过程建模与防控策略
评论
0/150
提交评论