《利用中断实现发声程序----课程设计(共14页).docx》由会员分享,可在线阅读,更多相关《利用中断实现发声程序----课程设计(共14页).docx(14页珍藏版)》请在taowenge.com淘文阁网|工程机械CAD图纸|机械工程制图|CAD装配图下载|SolidWorks_CaTia_CAD_UG_PROE_设计图分享下载上搜索。
1、精选优质文档-倾情为你奉上 课程设计说明书 课程名称: 微机原理课程设计 题 目: 利用中断实现发声程序 院 系: 力物学院 专业班级: 光电16-1班 学 号: 学生姓名: 任陈飞 指导教师: 郭娟 2019年 6月28日安徽理工大学课程设计(论文)任务书 数学与大数据学院 院系 信计 教研室学 号学生姓名任陈飞专业(班级) 光电16-1班设计题目 利用中断实现发声程序设计技术参数Windows操作系统、masm5集成开发环境设计要求用汇编语言编写程序完成发声子程序,要求使用中断程序实现工作量1.编写代码 2.设计说明书不少于12页 3.参考文献不少于5个工作计划2019.6.24 接受设计
2、任务,收集资料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、陈飞 学号: 专业班级: 光电16-1班 课程设计题目: 利用中断实现发声程序 指导教师评语: 成绩: 指导教师: 年 月 日目录1概述1.1 MASM汇编开发环境简介MASM是Microsoft Macro Assembler的缩写,是微软公司为x86微处理器家族开发的汇编开发环境,拥有可视化的开发界面,使开发人员不必再使用DOS环境进行汇编的开发,编译速度快,支持80x86汇编以及Win32Asm,是Windows下开发汇编的利器。它与windows平台的磨合程度非常好,但是在其他平台上就有所限制,使用MASM的开发人员必须在windows下进行开发。它支持的宏很灵巧,既广泛又多样性,结构
4、化程序的惯用语法,包含高级架构式的循环、程序调用,以及轮替 (alternation)(因此,MASM 算是高级汇编器的一个范本)。1.2 设计要求利用中断方式,编写程序实现每隔10秒响铃一次,并在屏幕上显示“The bell is ring”2需求分析2.1 CPU与I/O外设通信3种控制方式CPU和I/O设备进行输入输出数据的方式有三种:程序直接控制方式,中断方式和DMA方式。三种方式的特点:(1)程序直接控制方式最简单的I/O控制方式是处理机对I/O设备直接进行控制,采取程序I/O(Programmed I/O)方式或称为忙一等待方式。CPU首先向设备控制器的控制寄存器发出一条I/O指令
5、启动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)中断控制在现代计算机系
6、统中,对I/O设备的控制,广泛地采用中断(Interrupt-Driven)方式,即当某进程要启动某个I/O设备时,便由CPU向相应的设备控制器的控制寄存器发出一条I/O命令,然后立即返回继续执行原来的任务。设备控制器便按照该命令的要求去控制I/O设备。若I/O设备忙,则由驱动程序将请求插入设备等待队列。此时, CPU与I/O设备处于并行工作状态。例如,在输入时,当设备控制器收到 CPU发来的读命令后,便准备接收从相应输入设备送来的数据。一旦数据进入数据寄存器,控制器便通过中断请求线INT向CPU发送一中断信号,中断子程序由CPU读取状态寄存器忙/闲标志busy进行测试检查输入过程中是否出错,
7、若无错,便从数据寄存器中读出数据,写入指定内存单元。所以,中断驱动方式在I/O设备输入数据的过程中,无需 CPU干预,可以使CPU与I/O设备并行工作。仅当输完一个数据时,才需 CPU花费极短的时间去进行中断处理。从而大大地提高了整个系统的资源利用率及吞吐量,特别是CPU的利用率。(3)DMA控制中断驱动I/O方式虽然大大提高了主机的利用率,但是它以字(节)为单位进行数据传送,每完成一个字(节)的传送,控制器便要向CPU请求一次中断(做保存现场信息,恢复现场等工作),仍然占用了CPU的许多时间。这种方式对于高速的块设备的I/O控制显然是不适合。为了进一步减少CPU对I/O的干预,引入了直接存储
8、器访问DMA(Direct Memory Access)控制方式。DMA方式是一种完全由硬件执行IO数据交换的工作方式,它需要使用一个专门的DMA控制器(DMAC),内含于设备控制器,DMAC中有控制状态寄存器、传送字节计数器、内存地址寄存器和数据缓冲寄存器。在这种方式中,DMAC采用盗窃总线控制权的方法从CPU接管对总线的控制,成批的数据交换不经过CPU而直接在内存和IO设备之间进行。DMA方式下的数据传送过程可分为三个阶段:1) 预处理阶段:当进程要求设备输入数据时,CPU把准备存放输入数据的内存起始地址以及要传送的字节数分别送入DMAC中的内存地址寄存器和传送字节计数器。另外,还把控制状
9、态寄存器中的中断允许位和启动位置成1,从而启动设备,开始进行数据输入。2) 数据传送阶段:发出数据传输要求的进程进入等待状态,进程调度程序调度其他进程占据CPU。DMAC不断地窃取CPU工作周期,执行数据传送的操作:向内存发出地址和控制信号,进行地址修改,对传送字的个数计数,直到所要求的字节全部传送完毕。3) 后处理阶段:DMAC在传送完所有字节时,通过中断请求线发出中断信号。CPU在接收到中断信号后,转入中断处理程序进行后续处理。中断处理结束后,CPU返回到被中断的进程中,或切换到新的进程上下文环境中,继续执行。DMA方式起到代理CPU的功能,较之中断驱动方式,又是成百倍地减少了CPU对 I
10、/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次,每次调用
11、一个1CH类型的中断。系统中原有的1CH类型中断服务子程序没有执行任何功能。即每次中断不执行任何操作返回主程序。替换原有中断服务程序,变为用户的发声子程序ring。10秒钟将进行182次中断,在第182次中断时执行发声功能,并重置计数次数182,其他直接跳出中断服务子程序。2.3 主程序2.3.1主程序负责对中断向量进行设置和恢复等操作中断向量的存取:(1)设置中断向量:MOV DX, OFFSET RING;新偏移量送DXMOV AX, SEG RINGMOV DS, AX;新段址送DSMOV AL, 1CHMOV AH, 25HINT 21H;写入新的中断向量(2)取中断向量:MOV AL
12、,1CH;取中断向量MOV AH,35HINT 21HPUSH ES;存原中断向量段址PUSH BX;存原中断向量偏移量2.3.2主程序的延时控制 延时控制目的是延长主程序执行期间给中断服务程序机会实现中断。Mov bx, 1234HMov dx, bxLoop1: Mov cx,bxDelay: Loop delay Dec dx Loop loop13程序实现3.1 程序数据段:DATASEGMENTCOUNT DW 1MESS DB The bell is ring!, 0DH,0AH,$DATA ENDS主程序:CODE SEGMENTASSUME CS:CODE,DS:DATA,ES
13、:DATAMAIN PROC FARSTART: PUSH DSSUB AX, AXPUSH AXMOV AX, DATAMOV DS, AXMOV AL, 1CH;取中断向量MOV AH, 35HINT 21HPUSH ES;存原中断向量段址PUSH BX;存原中断向量偏移量PUSH DSMOV DX,OFFSET RING;新偏移量送DXMOV AX, SEG RINGMOV DS,AX;新段址送DSMOV AL, 1CHMOV AH, 25HINT 21H;写入新的中断向量POP DSIN AL,21H;读取中断屏蔽字AND AL,B;允许定时器中断OUT 21H, ALSTI; 开中断
14、MOV BX,50DELAY: MOV DI, 65535DELAY2:MOV SI,65535;延时 DELAY1:DEC SIJNZ DELAY1DEC DIJNZ DELAY2POP DX;恢复原中断向量POP DSMOV AL, 1CHMOV AH, 25HINT 21HRETMAIN ENDP中断服务程序:RING PROC NEARPUSH DS;各工作寄存器内容入栈PUSH AXPUSH CXPUSH DXMOV AX, DATAMOV DS, AXSTI DEC COUNT;计秒值 JNZ EXIT MOV DX, OFFSET MESS MOV AH, 09H INT 21H
15、 MOV DX, 100IN AL, 61HAND AL, 0FCHSOUND: XOR AL, 02OUT 61H,AL;扬声器发声MOV CX, 140HWAIT1: LOOP WAIT1;延时等待DEC DXJNE SOUNDMOV COUNT, 182EXIT: CLI;关中断POP DXPOP CXPOP AXPOP DSIRET;中断返回RING ENDP3.2 程序和运行界面 图3-1 程序1 图3-2 程序2 图3-3 运行结果4总结不知不觉,微机原理与接口技术课程已经结束了。回想起来受益匪浅,主要是加深了对计算机的一些硬件情况和运行原理的理解和汇编语言的编写,期间也听老师讲过
16、,微机原理这门课程是比较偏硬件一点的。正是因为这一点,我还是对它比较喜欢的,因为它和我的专业方向“光电信息”有很大的联系,在光电信息领域很多场合要应用到微机,本着想就业好的心态,因此对该课程的学习还是有浓厚的兴趣的。下面谈谈这期学习该课程的心得与体会:刚开始接触这门课程的时候,感觉到它似乎非常的容易,尤其是第一章,它讲到的都是一些计算机的发展历程,听的是津津有味的,知道原来计算机是那么来的啊!这时我有一个感想,当初发明出第一台计算机的人是多么的伟大啊,使人在计算复杂问题上,速度得到了很大的提高,随着时代的发展,计算机的运行速度也越来越快,CPU由原来的M级发展到了G级,是多么令人惊奇的一个进步
17、,到了21世纪,计算机得到了充足的发展,IT行业也成为了一个热门的行业,如果专业技能强的话,一般比其它行业拿的工资都要高,同时也就增添了我对它学习的信心。就像我们学的这个微机原理与接口技术课,如果能把它融会贯通的话,对专业的学习和深造都会有很大的益处,对将来的就业也会有极大的帮助。其实我觉得,在学习微机原理这一块,最让我觉得棘手就是这个汇编语言了,在学它的过程中,觉得还是有点吃力,尤其是它的指令很多的,有时候总是把它给记混了,所以在做练习的时候这个问题最突出了,如果是自己写程序的话,总是写不对,到计算机上也运行不了,唯一的解决办法就是看参考书上的程序再模仿编写,但是自己的编程能力上没有得到有效
18、的提高。这也有可能是自己学习方法上的不足吧!在今后的学习中要针对性的改变这种不足。通过了这一学期对微机原理的学习,真的对它有了一个全新的认识,虽然说,这门课已经结束了,但是我会坚持对它的学习,使自己在汇编语言上有一个长足的提高!力争在掌握高级语言基础上掌握一门汇编语言,这就是我这期学习微型计算机原理与接口技术课程的心得体会!参考文献1周荷琴.微机原理接口技术M.北京:清华大学出版社,2016.2徐晨.微机原理与应用M.北京:高等教育出版社,2004.3王爽.汇编语言M.北京:清华大学出版社,2008.4孙德文.微型计算机技术M.高等教育出版社, 2010.5许立锌.微型计算机原理及应用M.北京:机械工业出版社,2003.专心-专注-专业