您好,欢迎访问三七文档
当前位置:首页 > 电子/通信 > 综合/其它 > 利用中断实现发声程序----课程设计
课程设计说明书课程名称:微机原理课程设计题目:利用中断实现发声程序院系:力物学院专业班级:光电16-1班学号:2016305271学生姓名:任陈飞指导教师:郭娟2019年6月28日2安徽理工大学课程设计(论文)任务书数学与大数据学院院系信计教研室学号2016305271学生姓名任陈飞专业(班级)光电16-1班设计题目利用中断实现发声程序设计技术参数Windows操作系统、masm5集成开发环境设计要求用汇编语言编写程序完成发声子程序,要求使用中断程序实现工作量1.编写代码2.设计说明书不少于12页3.参考文献不少于5个工作计划2019.6.24接受设计任务,收集资料2019.6.25学习中断原理,中断服务程序设置方式2019.6.26发声子程序原理2019.6.28编码调试书写设计说明书2019.6.29提交检查参考资料1.周荷琴.微机原理接口技术[M].北京:清华大学出版社,2016.2.徐晨.微机原理与应用[M].北京:高等教育出版社,2004.3.王爽.汇编语言[M].北京:清华大学出版社,2008.4.孙德文.微型计算机技术[M].高等教育出版社,2010.5.许立锌.微型计算机原理及应用[M].北京:机械工业出版社,2003.指导教师签字教研室主任签字2019年6月24日3安徽理工大学课程设计(论文)成绩评定表学生姓名:任陈飞学号:2016305271专业班级:光电16-1班课程设计题目:利用中断实现发声程序指导教师评语:成绩:指导教师:年月日4目录1概述...................................................51.1MASM汇编开发环境简介..............................51.2设计要求..........................................52需求分析...............................................52.1CPU与I/O外设通信3种控制方式.....................52.2中断方式实现原理..................................72.2.1中断服务子程序................................72.3主程序............................................72.3.1主程序负责对中断向量进行设置和恢复等操作......72.3.2主程序的延时控制..............................83程序实现...............................................83.1程序..............................................83.2程序和运行界面...................................104总结..................................................12参考文献................................................1451概述1.1MASM汇编开发环境简介MASM是MicrosoftMacroAssembler的缩写,是微软公司为x86微处理器家族开发的汇编开发环境,拥有可视化的开发界面,使开发人员不必再使用DOS环境进行汇编的开发,编译速度快,支持80x86汇编以及Win32Asm,是Windows下开发汇编的利器。它与windows平台的磨合程度非常好,但是在其他平台上就有所限制,使用MASM的开发人员必须在windows下进行开发。它支持的宏很灵巧,既广泛又多样性,结构化程序的惯用语法,包含高级架构式的循环、程序调用,以及轮替(alternation)(因此,MASM算是高级汇编器的一个范本)。1.2设计要求利用中断方式,编写程序实现每隔10秒响铃一次,并在屏幕上显示“Thebellisring”2需求分析2.1CPU与I/O外设通信3种控制方式CPU和I/O设备进行输入输出数据的方式有三种:程序直接控制方式,中断方式和DMA方式。三种方式的特点:(1)程序直接控制方式最简单的I/O控制方式是处理机对I/O设备直接进行控制,采取程序I/O(ProgrammedI/O)方式或称为忙一等待方式。CPU首先向设备控制器的控制寄存器发出一条I/O指令启动I/O设备进行数据传输,硬件同时把状态寄存器中的忙/闲标志busy置为1,表示该I/O设备尚未输入完一个字(符)。接着CPU应重复读取状态寄存器忙/闲标志busy进行测试(CPU不能执行其他进程),直至busy=0,表示该I/O设备已将输入数据送入到I/O控制器的数据寄存器中,于是CPU将从数据寄存器中取出数据,送入内存的指定单元,接着,再启动去读下一个数据,并置busy=l。在程序I/O方式中,由于CPU的速度远远高于I/O设备,导致CPU的绝大部分时间都处于等待I/O设备完成而循环测试之中,造成了CPU的极大浪费。但是它管理简单,在要求不高的场合可以被采用。(2)中断控制在现代计算机系统中,对I/O设备的控制,广泛地采用中断(Interrupt-Driven)方式,即当某进程要启动某个I/O设备时,便由CPU向6相应的设备控制器的控制寄存器发出一条I/O命令,然后立即返回继续执行原来的任务。设备控制器便按照该命令的要求去控制I/O设备。若I/O设备忙,则由驱动程序将请求插入设备等待队列。此时,CPU与I/O设备处于并行工作状态。例如,在输入时,当设备控制器收到CPU发来的读命令后,便准备接收从相应输入设备送来的数据。一旦数据进入数据寄存器,控制器便通过中断请求线INT向CPU发送一中断信号,中断子程序由CPU读取状态寄存器忙/闲标志busy进行测试检查输入过程中是否出错,若无错,便从数据寄存器中读出数据,写入指定内存单元。所以,中断驱动方式在I/O设备输入数据的过程中,无需CPU干预,可以使CPU与I/O设备并行工作。仅当输完一个数据时,才需CPU花费极短的时间去进行中断处理。从而大大地提高了整个系统的资源利用率及吞吐量,特别是CPU的利用率。(3)DMA控制中断驱动I/O方式虽然大大提高了主机的利用率,但是它以字(节)为单位进行数据传送,每完成一个字(节)的传送,控制器便要向CPU请求一次中断(做保存现场信息,恢复现场等工作),仍然占用了CPU的许多时间。这种方式对于高速的块设备的I/O控制显然是不适合。为了进一步减少CPU对I/O的干预,引入了直接存储器访问DMA(DirectMemoryAccess)控制方式。DMA方式是一种完全由硬件执行I/O数据交换的工作方式,它需要使用一个专门的DMA控制器(DMAC),内含于设备控制器,DMAC中有控制状态寄存器、传送字节计数器、内存地址寄存器和数据缓冲寄存器。在这种方式中,DMAC采用盗窃总线控制权的方法从CPU接管对总线的控制,成批的数据交换不经过CPU而直接在内存和I/O设备之间进行。DMA方式下的数据传送过程可分为三个阶段:1)预处理阶段:当进程要求设备输入数据时,CPU把准备存放输入数据的内存起始地址以及要传送的字节数分别送入DMAC中的内存地址寄存器和传送字节计数器。另外,还把控制状态寄存器中的中断允许位和启动位置成1,从而启动设备,开始进行数据输入。2)数据传送阶段:发出数据传输要求的进程进入等待状态,进程调度程序调度其他进程占据CPU。DMAC不断地窃取CPU工作周期,执行数据传送的操作:向内存发出地址和控制信号,进行地址修改,对传送字的个数计数,直到所要求的字节全部传送完毕。3)后处理阶段:DMAC在传送完所有字节时,通过中断请求线发出中断信号。CPU在接收到中断信号后,转入中断处理程序进行后续处理。中断处理结束后,7CPU返回到被中断的进程中,或切换到新的进程上下文环境中,继续执行。DMA方式起到代理CPU的功能,较之中断驱动方式,又是成百倍地减少了CPU对I/O控制的干预,进一步提高了CPU与I/O设备的并行操作程度。2.2中断方式实现原理中断工作原理:计算技术里中断过程,就是主芯片的外部信号或内部信号,中断了该芯片正在执行的程序,主芯片转而处理由该信号引发的其他程序,结束后再回到中断的“断点”,继续执行原有程序。2.2.1中断服务子程序(1)利用扬声器发出声音端口号为61H的设备控制器的第1位交替为1和0,该位与扬声器的脉冲门相连,当第一位由1变0或由0变1,且维持一段时间,产生一个脉冲电流,经放大后送至扬声器发出声音。61H的第0位和振荡器相连,不需要振荡器发声,所以把它置0。(2)10秒控制10秒控制:定时器每秒钟中断18.2次,每次调用一个1CH类型的中断。系统中原有的1CH类型中断服务子程序没有执行任何功能。即每次中断不执行任何操作返回主程序。替换原有中断服务程序,变为用户的发声子程序ring。10秒钟将进行182次中断,在第182次中断时执行发声功能,并重置计数次数182,其他直接跳出中断服务子程序。2.3主程序2.3.1主程序负责对中断向量进行设置和恢复等操作中断向量的存取:(1)设置中断向量:MOVDX,OFFSETRING;新偏移量送DXMOVAX,SEGRINGMOVDS,AX;新段址送DSMOVAL,1CHMOVAH,25HINT21H;写入新的中断向量(2)取中断向量:MOVAL,1CH;取中断向量MOVAH,35H8INT21HPUSHES;存原中断向量段址PUSHBX;存原中断向量偏移量2.3.2主程序的延时控制延时控制目的是延长主程序执行期间给中断服务程序机会实现中断。Movbx,1234HMovdx,bxLoop1:Movcx,bxDelay:LoopdelayDecdxLooploop13程序实现3.1程序数据段:DATASEGMENTCOUNTDW1MESSDB‘Thebellisring!’,0DH,0AH,’$’DATAENDS主程序:CODESEGMENTASSUMECS:CODE,DS:DATA,ES:DATAMAINPROCFARSTART:PUSHDSSUBAX,AXPUSHAXMOVAX,DATAMOVDS,AXMOVAL,1CH;取中断向量MOVAH,35HINT21HPUSHES;存原中断向量段址PUSHBX;存原中断向量偏移量PUSHDS9MOVDX,OFFSETRING;新偏移量送DXMOVAX,SEGRINGMOVDS,AX;新段址送DSMOVAL,1CHMOVAH,25HINT21H;写入新的中断向量POPDSINAL,21H;读取中断屏蔽字ANDAL,11111110B;允许定时器中断OUT21H,ALSTI;开中断MOVBX,50DELAY:MOVDI,65535DELAY2:MOVSI,65535;延时DELAY1:DECSIJNZDELAY1DECDIJNZDELAY2POPDX;恢复原中断向量POPDSMOVAL,1CHMOVAH,25HINT21HRETMAINENDP中断服务程序:RINGPROCNEARPUSHDS;各工作寄存器内容入栈PUSHAXPUSHCXPUSHDXMOVAX,DATAMOVDS,AXSTI10DECCOUNT;计秒值JNZEXITMOVDX,OFFSETMESSMOVAH,09HINT21HMOVDX,100INAL,61HANDAL,0FCHSOUND:XORAL,02OUT61H,AL;扬声器发声MOVCX,140HWAIT1:LOOPWAIT1;延时等待DECDXJNESOUNDMOVCOUNT,182EXIT:CLI;关中断POPDXPOPCXPOPAXPOPDSIRET;中断返回RINGENDP3.2程序和运行界面11图3-1程序1图3-2程序212图3-3运行结果4总结不知不觉,微机原理与接口技术课程已经结束了。回
本文标题:利用中断实现发声程序----课程设计
链接地址:https://www.777doc.com/doc-6004005 .html