第8章.ppt

大学汇编语言程序设计-相伟-课件PPT

收藏

资源目录
跳过导航链接。
大学汇编语言程序设计-相伟-课件PPT.zip
压缩包内文档预览:(预览前20页/共69页)
预览图 预览图 预览图 预览图 预览图 预览图 预览图 预览图 预览图 预览图 预览图 预览图 预览图 预览图 预览图 预览图 预览图 预览图 预览图 预览图
编号:21836146    类型:共享资源    大小:11.91MB    格式:ZIP    上传时间:2019-09-06 上传人:QQ24****1780 IP属地:浙江
25
积分
关 键 词:
大学 汇编 语言程序设计 相伟 课件 ppt
资源描述:
大学汇编语言程序设计-相伟-课件PPT,大学,汇编,语言程序设计,相伟,课件,ppt
内容简介:
21世纪高等院校规划教材,汇编语言程序设计,相 伟 主编 徐小平 李珍香 副主编,中国水利水电出版社,第八章 输入输出与中断,本章学习目标,通过本章学习,读者应该掌握以下内容: 输入输出及输入输出控制方式 中断技术 DOS与BIOS中断调用,8.1 输入输出,一般来说,I/O接口的需要解决以下问题: 速度匹配 信号电平匹配 信息格式及类型转换 时序匹配,8.1.1 输入输出概述,1CPU与I/O设备之间交换的信息类型 数据信息 状态信息 控制信息,2端口的编址方式 I/O端口与存储器统一编址 I/O端口单独编址,8.1.2 输入输出指令,1. IN指令 用来从指定的端口地址中取数据送入累加器里。 IN AL,PORT IN AX,PORT IN AL,DX IN AX,DX,2OUT指令 用来把累加器的内容送往指定的外设端口中。 OUT PORT,AL OUT PORT,AX OUT DX,AL OUT DX,AX,例如: IN AL ,40H ;(40H)AL OUT 80H,AL ;AL(80H) MOV DX,379H IN AL,DX ;(379H)AL,1无条件传送方式,例8-1 假设有一个包含8个开关的输入接口电路,其端口地址为80H,读取开关数据并存入BUF单元。 则程序段为: LEA BX,BUF IN AL,80H MOV BX ,AL,例8-2 假设有一个包含8个LED的输出接口电路,其端口地址为82H,编写程序显示TAB缓冲区中的20个数据,每个数据的显示间隔是5s。 则程序段为: LEA SI,TAB MOV CX,20 LP: MOV AL,SI INC SI OUT 82H,AL CALL DELAR5s LOOP LP,2查询传送方式,CPU在与外部设备交换数据时,很难保证输入设备已经准备好了数据,或者是输出设备已经处在可以接收数据的状态。因此,一般要在外部设备准备就绪并且I/O接口已经做好数据传送的情况下,才能进行数据传送,这种传送方式成为查询传送方式。,例8-3 假设有一个输入接口电路,其状态端口地址为SADDR1,状态字的D0位为1表示数据准备好,数据端口地址为DADDR1,现以查询方式输入COUNT1个数据,输入的数据存放在BUF缓冲区。 则实现查询输入数据的程序段为: LEA BX,BUF MOV CX,COUNT1 LP: IN AL,SADDR1 TEST AL,01H JZ LP IN AL,DADDR1 MOV BX,AL INC BX LOOP LP,例8-4 假设有一个输出接口电路,其状态端口地址为SADDR2,状态字的D1位为1表示外设空闲,数据端口地址为DADDR2,现以查询方式将TAB缓冲区中的COUNT2个数据输出。 则实现查询输出数据的程序段为: LEA BX,TAB MOV CX,COUNT2 LP: IN AL,SADDR2 TEST AL,02H JNZ LP OUT DADDR2,AL INC BX LOOP LP,3中断传送方式,采用中断方式后, CPU首先执行主程序,等待中断的发生。当输入设备将数据准备好,或者输出设备空闲时,便通过I/O接口向CPU发申请中断。CPU在每执行完一条指令之后都会检查是否有中断请求,只要满足中断响应条件,CPU就暂停执行当前的程序,转向执行中断处理程序,进行数据传送,等传送完成后,CPU返回到被中断的程序,继续进行原来的工作。,4DMA方式,DMA方式是由DMA控制器来实现对存储器的直接访问,控制存储器和I/O设备之间的数据传送的。DMA方式克服了程序查询方式和中断方式的弊端,用DMA控制器来控制存储器和I/O设备之间的数据传送时,并不经过CPU,传输过程中CPU不占用总线,这样,传输时就不需要保存断点等额外操作了。另外,整个控制数据块传送的过程,包括地址增量和计数器减量的操作,都是由硬件控制完成的,而不像前面提到的方式要依靠软件编程来实现,因而大大缩短了数据传送的控制时间,提高了整个系统的处理效率。,8.2 中断,在微型计算机系统中,广泛地采用了中断技术,如BIOS中断、DOS中断、中断控制器8259A管理的外部中断等。,8.2.1 8086/8088CPU的中断源,中断是由于CPU的内部原因或外部请求而引发的。引发中断请求的来源称为中断源。 8086/8088CPU最多有256个中断源,这些中断源根据来自CPU的内部还是外部分为两大类:内部中断源和外部中断源。 8086/8088CPU的中断源分类如图8-4所示。,1外部中断,外部中断是由来自CPU外部的硬件电路产生的中断,又称硬件中断。外部中断分不可屏蔽中断NMI和可屏蔽中断INTR。, 不可屏蔽中断NMI,所谓不可屏蔽中断是指该中断请求不能通过软件的方式对其屏蔽,一旦出现NMI中断请求,CPU必须立即响应。因此,对系统能否正确运行有重大影响的中断请求可以作为NMI中断请求信号。如在IBM-PC机中,有以下三种情况是作为不可屏蔽中断请求信号的,即:系统板上的动态RAM奇偶校验错误、I/O通道扩展板上的存储器奇偶校验错误、协处理器8087的中断请求。, 可屏蔽中断INTR,所谓可屏蔽中断是指该中断请求信号可以通过软件的方式对其屏蔽。一旦出现可屏蔽中断请求,CPU是否响应,取决于CPU 中的中断标志位IF:当IF=1时,CPU响应中断;当IF=0时,CPU不响应中断。IF的值可以通过软件来设置:指令STI使IF=1,称为CPU开中断;指令CLI使 IF=0,称为CPU关中断。,2内部中断,内部中断是由CPU在执行程序时产生的中断,又称软件中断。内部中断不受IF状态位的影响,即:不论IF=0,还是IF=1,都不影响内部中断的响应。, 除法错中断,在除法运算时,若除法为0或商超出了寄存器所能表示的范围,就产生一个类型码为0的中断。 例如: MOV DX,0002H MOV AX,3578H MOV BX,2 DIV BX, 单步中断,在使用DEBUG调试程序时,常常使用T命令单步执行程序,这样每执行一条指令,就显示出当前各个寄存器的值、每个状态标志位的状态以及下一条要执行的指令。其实T命令就是利用了单步中断。 单步中断是指在TF=1时,CPU每执行一条指令,自动产生一个类型码为1的中断。, 断点中断,断点中断是类型码为3的中断,与单步中断一样,主要用于程序调试。在程序中设置断点,就是插入一条断点指令INT 3,程序执行到断点时便产生中断,显示出当前各个寄存器的值、每个状态标志位的状态以及下一条要执行的指令。, 溢出中断,溢出中断是类型码为4的中断。若程序在执行某条指令时,使OF=1,则紧跟着的下一条INTO指令(中断溢出指令),便会产生溢出中断。 溢出中断处理程序只有一条IRET指令,因而可由用户对其进行功能扩充。, 软中断INT n,指令格式: INT n 其中n称为中断类型码,n的取值范围是0FFH或0255。 CPU在执行INT指令时,就产生一个软中断,转去调用中断处理程序,完成预设的功能。如执行下列指令使程序返回DOS。,3中断优先级,8086/8088CPU规定的各个中断源的优先级按由高到底分配如下: 除单步中断之外的内部中断包括除法错中断、断点中断、溢出中断、软中断,它们的优先级最高,NMI的优先级次之,INTR的优先级比NMI的优先级低,单步中断的优先级最低。,8.2.2 中断向量表 1中断类型码,中断类型码代表一个中断,它相当于在CPU和中断服务程序之间建立了一座桥梁,CPU通过中断类型码在中断向量表中找到要执行的中断处理程序的入口地址。因此,无论哪一种中断源都必须有明确的中断类型码,当一个中断源发生中断请求时,要么CPU按照与该中断源的事先约定由硬件自动形成中断类型码,要么由该中断源的接口电路提供中断类型码,要么在软中断指令中直接提供中断类型码。,8086/8088CPU获取中断类型码的方法如下:, 除法错中断、单步中断、断点中断、溢出中断的中断类型码依次为0、1、3、4,由CPU自动生成。 不可屏蔽中断NMI的中断类型码为2,由CPU自动生成。 可屏蔽中断INTR的中断类型码,通常由中断控制器8259A提供。 软中断指令INT n的中断类型码就是n,由指令直接提供。,2中断向量表,CPU响应中断后,获得中断类型码,通过中断类型码取得中断处理程序的入口地址,转去执行中断处理程序。为此,8086/8088CPU在内存地址00000H003FFH共1KB的存储区间内,建立了中断类型码与对应的中断处理程序入口地址之间的对应表,该表称为中断向量表。如图8-5所示。,表中存放了256个中断源的中断处理程序的入口地址,每个入口地址占用4个字节单元,其中低地址的2个字节单元里存放入口地址的偏移地址,高地址的2个字节单元里存放入口地址的段地址,所以中断向量表共占有4*256=1024个字节单元,即1KB存储空间。偏移地址和段地址按照低字节存放在低地址、高字节存放在高地址的原则存储。,假如某中断源使用的中断类型码是60H,则该中断源对应的中断处理程序的入口地址需要存放在地址为60H*4=00180H开始的4个连续字节单元中,即在00180H字单元中存放偏移地址,在00182H字单元中存放段地址。当CPU执行软中断指令INT 60H时,自动将00180H字单元中的偏移地址取出赋给IP,将00182H字单元中的段地址取出赋给CS,使CPU执行的下一条指令地址为中断处理程序的开始地址。,3中断向量表的初始化, 通过编程直接对中断向量表写入 通过25H号系统功能调用间接对中断向量表写入, 通过编程直接对中断向量表写入,假如用户自定义软中断使用的中断类型码是60H,软中断处理程序为INT60。则下列程序段可实现中断向量表的初始化: PUSH DS MOV AX,0 MOV DS,AX MOV SI,0180H MOV AX, OFFSET INT60 MOV SI, AX MOV AX, SEG INT60 MOV SI+2,AX POP DS, 通过25H号系统功能调用间接对中断向量表写入,25H号功能用来设置中断向量,调用方法如下: 入口参数: AH=25H AL=中断类型码 DS:DX=中断处理程序的入口地址 出口参数: 无 功能:将DS:DX存放的中断处理程序的入口地址,存入中断向量表中与AL指定的中断类型码相对应的存储区域。,同样,假如用户自定义软中断使用的中断类型码是60H,软中断处理程序为INT60。则通过DOS系统功能调用INT 21H实现中断向量表初始化的程序段如下: PUSH DS MOV AX,SEG INT60 MOV DS,AX MOV DX,OFFSET INT60 MOV AH,25H MOV AL,60H INT 21H POP DS,4中断向量的保存与恢复,取中断向使用系统功能的35H号功能,调用方法如下: 入口参数: AH=35H AL=中断类型码 出口参数:ES:BX=中断处理程序的入口地址 功能:将AL中指定的中断类型码所对应的中断处理程序的入口地址,取出存入ES:BX寄存器中。,假如用户自定义软中断使用的中断类型码是60H,则保存原中断向量并在中断结束后恢复原中断向量的程序段如下: MOV AH,35H MOV AL,60H INT 21H PUSH ES PUSH BX POP DX POP DS MOV AH,25H MOV AL,60H INT 21H,8.2.3 软中断程序设计, 中断调用指令INT 格式:INT n 功能:转中断处理程序执行,该中断处理程序对应的中断类型码为n。 具体地说,INT的执行过程如下: a) 保护现场:(FLAGS)、(CS)、(IP)依次入栈。 b) 清除IF、TF,使IF=0、TF=0,禁止外部中断和单步中断。 c)(n*4)IP,(n*4+2)CS。,中断返回指令IRET 格式:IRET 功能:将中断调用指令INT入栈时保存的信息出栈,以恢复中断调用之前的现场。 具体地说,IRET的执行过程如下: a)(IP)出栈IP ,SP+2SP b)(CS)出栈CS,SP+2SP c)(FLAGS)出栈FLAGS,SP+2SP,8.2.4 DOS与BIOS中断调用,在DOS系统下,用户应用程序可以直接调用DOS提供的功能,这些功能是以软中断处理程序的形式存在的,用户在使用这些软中断处理程序时,只要按要求设置好入口参数,直接用软中断指令调用即可。,系统功能调用的方法如下:,a) 系统功能编号送入AH寄存器。 b) 入口参数按规定送入指定的寄存器(如果有入口参数)。 c) 用INT 21H进行功能调用。 d) 分析出口参数决定后续的程序执行(如果有出口参数并且需要的话)。,例8-6 键盘输入输出功能调用,设计要求对用户的每一个输入字符都换行输出,当用户输入回车符后退出,输入Ctrl-Break键时无效,则实现该功能的程序段为: MOV AH,6 LP: MOV DL,0FFH INT 21H CMP AL,0DH JE QT MOV DL,AL INT 21H JMP LP QT: HLT,例8-7 测试键盘状态,屏幕显示Press any key continue ,等待用户按键,当用户按任意键后,继续向下执行,试编写实现上述功能的程序段。 MESS DB Press any key continue $ MOV AH,9 LEA DX,MESS INT 21H LP: MOV AH,0BH INT 21H CMP AL, 0 JZ LP,例8-8 打印输出功能调用,利用5号系统功能调用,打印字符串 Hello world ! STR DB Hello world ! ,0DH,0AH,$ LEA SI,STR MOV AH,5 NT:MOV DL,SI CMP DL, $ JZ QT INT 21H INC SI JMP NT QT:HLT,例8-9 日期功能调用,设置系统的当前日期为2004年8月10日。 MOV CX,2004 MOV DH,8 MOV DL,10 MOV AH,2BH INT 21H CMP AL,0 JNZ ERR,例8-10 时间功能调用,设置系统的当前时间为10点35分20秒 MOV CH,10 MOV CL,35 MOV DH,20 MOV DL,0 MOV AH,2DH INT 21H CMP AL,0 JNZ ERR,2BIOS中断调用,ROM BIOS中断调用方法如下: a) 功能编号送入AH寄存器。 b) 入口参数按规定送入指定的寄存器。 c) 用INT n 进行功能调用。 d) 分析出口参数决定后续的程序执行(如果有出口参数并且需要的话)。,键盘中断INT 16H,特殊功能键状态,例8-11 从键盘读一个字符 MOV AH,0 INT 16H,例8-12 从键盘缓冲区读字符存放到以BUF为首地址的内存区域。 LEA BX,BUF LP: MOV AH,1 INT 16H JZ LP MOV BX,AL,例8-13 在15行20列位置显示字符“A” MOV AH,0FH INT 10H MOV AH,2 MOV DX,1520H INT 10H MOV AH,0AH MOV AL,“A” MOV CX,1 INT 10H,例8-14 以查询方式打印“$” LP:MOV AH,2 INT 17H ;读打印机状态 TEST AH,80H ;测试打印机“忙”否? JNZ LP ;打印机忙时转LP MOV AH,0 MOV AL,$ INT 17H ;打印字符, 时钟中断
温馨提示:
1: 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
2: 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
3.本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
提示  人人文库网所有资源均是用户自行上传分享,仅供网友学习交流,未经上传用户书面授权,请勿作他用。
关于本文
本文标题:大学汇编语言程序设计-相伟-课件PPT
链接地址:https://www.renrendoc.com/p-21836146.html

官方联系方式

2:不支持迅雷下载,请使用浏览器下载   
3:不支持QQ浏览器下载,请用其他浏览器   
4:下载后的文档和图纸-无水印   
5:文档经过压缩,下载后原文更清晰   
关于我们 - 网站声明 - 网站地图 - 资源地图 - 友情链接 - 网站客服 - 联系我们

网站客服QQ:2881952447     

copyright@ 2020-2025  renrendoc.com 人人文库版权所有   联系电话:400-852-1180

备案号:蜀ICP备2022000484号-2       经营许可证: 川B2-20220663       公网安备川公网安备: 51019002004831号

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