汇编语言-两只老虎-实验报告(共18页)_第1页
汇编语言-两只老虎-实验报告(共18页)_第2页
汇编语言-两只老虎-实验报告(共18页)_第3页
汇编语言-两只老虎-实验报告(共18页)_第4页
汇编语言-两只老虎-实验报告(共18页)_第5页
已阅读5页,还剩14页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、第三次实验报告姓名:陈柯吉 学号:2012141441338第三次实验 8253定时器/计数器与接口实验 -乐曲程序计算机是如何产生音乐和声响的呢?原来在计算机中有一个可编程时间间隔定时器8253,它能根据程序提供的计数值和工作模式,产生各种形状和各种频率的计数/定时脉冲,提供给系统的各个部件使用。它还可以产生不同频率的脉冲作为扬声器的声源。在8253定时器内部有3个独立工作的计数器:Counter0, Counter1, Countre2,每个计数器都分配有一个端口地址,分别是40H,41H,42H。8253内部还有一个公用的控制寄存器,端口地址为43H,端口地址输入到8253的CS,A1,

2、A0端,分别对三个计数器和控制器寻址。对8253编程时,先要设定控制字,以选择计数器,确定工作模式和计数值的格式,每个计数器由三个引脚与外部联系,CLK为时钟输入端,GATA为门控制信号输入端,OUT为计数/定时信号输入端。每个计数器是以倒计数的方式计数,也就是说,从计数初值开始逐次减1,直到减为0为止。端口地址与计数器的关系:40H选中计数器0:作为定时器为系统日时钟提供计时基准41H选中计数器1:作为定时器使用42H选中计数器2:用来控制扬声器发声43H公用的控制器:分别对三个寄存器和控制器寻址那么,如何触动扬声器发出声音呢?原来PC机的主音箱上装有一只小喇叭,由定时器8253和并行接口芯

3、片8255(可编程外围接口芯片)控制其发声,8255包括三个8位寄存器,两个用于输入功能,一个用于输出功能。输入寄存器分配的I/O端口地址为60H和62H,输出寄存器分配的I/O端口地址为61H。8253定时器计数器2连接到扬声器,其电路如下: 8253 DRIVER 19318MHZ CLK 喇叭与门门22门1门 OUT2 8255 PB0 GATE2 PB1 装入计数器2的计数初值为533H(1.19318MHz/896Hz=1331=533H),这样,得到的控制字为10110110B=0B6H,即选中计数器2,读/写,工作方式三(方波发声器),二进制。计数器2的初始化程序为: MOV A

4、L,0B6H OUT 43H,AL 1) 计算计数值程序段:MOV DI, 给定频率 MOV DX, 12HMOV AX, 34DCHDIV DIAX中即为计数值。2) 打开扬声器发声,8255PB0,PBI送出高电平:IN AL , 61HOR AL , 3OUT 61H , AL3)关闭扬声器,停止发声:IN AL ,61HAND AL , 0FCHOUT 61H, AL 两只老虎的音频表定义在数据段中,如下:STACK SEGMENT DW 100 DUP(?)STACK ENDSDATA SEGMENTMUSIC DW 2 DUP(262,294,330,262) ; 频率表,1231

5、;1231 DW 2 DUP(330,349,392) ;345;345; DW 2 DUP(392,440,392,349,330,262) ;565431;565431 dw 2 dup(294,196,262),0 ;251;251,0表示结束 TIME DW 10 DUP(250*50),500*50,250*50,250*50,500*50 ;节拍表 DW 2 DUP(120*50,120*50,120*50,120*50,250*50,250*50) DW 2 DUP(250*50,250*50,500*50)N EQU 32 ;32个音符DATA ENDS二实验目的: 学习825

6、3计数器2输出方波信号用以驱动扬声器发声的原理,通过程序设置计数器2的输出波形的频率和延续时间,控制扬声器的音调和发生长短。三.实验内容:1.设计程序让微机演奏一段两只老虎的乐曲。2.思考如何让PC机演奏一遍,两遍以及数遍这段两只老虎的乐曲,并修改程序实现。四.实验报告:整理出运行正确的源程序清单(加以中文注释),并给出详细程序流程图。 开始判断是1或21 输入19的数字选择循环次数 调用SONG子程序打开扬声器2 否调用延时子程序关闭扬声器输入一个字符循环次数=0?结束否是结束否判断是17,QU,AJ吗判断是ESC吗吗根据预先设置好的频率赋值给变量关闭扬声器打开扬声器 调用延时子程序STAC

7、K SEGMENT DW 100 DUP(?)STACK ENDSDATA SEGMENTMUSIC DW 2 DUP(262,294,330,262) ; 频率表,1231;1231 DW 2 DUP(330,349,392) ;345;345; DW 2 DUP(392,440,392,349,330,262) ;565431;565431 dw 2 dup(294,196,262),0 ;251;251,0表示结束 TIME DW 10 DUP(250*50),500*50,250*50,250*50,500*50 ;节拍表 DW 2 DUP(120*50,120*50,120*50,1

8、20*50,250*50,250*50) DW 2 DUP(250*50,250*50,500*50)N EQU 32 ;32个音符M DB ?SAY DB 'Please input the times(19) you want: ','$'SAY2 DB '1 .TIGERS 2.PIANO: ','$'SAY3 DB 'ERROR','$'DATA ENDSCODE SEGMENT ASSUME CS:CODE,DS:DATA,ES:DATA,SS:STACK ;说明代码段、数据段、附;加段、

9、堆栈段START: MOV AX,DATA ;设置数据段的段地址 MOV DS,AX MOV ES,AXAGA: LEA DX,SAY2 MOV AH,9 INT 21H ;输出“1 .TIGERS 2.PIANO” MOV AH,1 INT 21H ;输入一个字符 CMP AL,31H JE TIGERS ;与一比较,相等则转TIGERS CMP AL,32H JE PIANO2 ;与二比较,相等则转PIANO MOV DL,0AH; 以下三行输入一个回车 MOV AH,2 INT 21H LEA DX,SAY3 MOV AH,9 INT 21H ;显示输出'ERROR' J

10、MP AGATIGERS: LEA DX,SAY MOV AH,9 INT 21H ;输出“TING JI BIAN:$” CALL INPUTA : CALL SONG DEC M JNZ A ;M自减1JMP QUIT2PIANO2: CALL PIANO;-;子程序INPUT;输入;- INPUT PROC MOV AH,1 INT 21H ;输入一个字符 LEA SI,M SUB AL,30H ;将ASCII码转为16进制数 MOV SI,AL RET INPUT ENDP;-;-;子程序SONG;播放音乐;- SONG PROCMOV AL,0B6H OUT 43H,AL ;选择计数

11、器2 LEA SI,MUSIC LEA DI,TIME MOV CX,N ;循环次数SONG2: PUSH CX PUSH DI MOV DI, SI MOV DX, 12H MOV AX, 34DCH DIV DI ;设置计数初值 OUT 42H,AL MOV AL,AH OUT 42H,AL IN AL , 61H OR AL , 3 OUT 61H , AL ;打开扬声器 POP DI MOV CX,20000 CALL DELAY ;调用延时子程序 IN AL ,61H AND AL ,0FCH OUT 61H, AL ;关闭扬声器 ADD SI,2 ADD DI,2 POP CX L

12、OOP SONG2SONG ENDP;-;-;子程序DELAY;延时子程序;-DELAY PROCPUSH AX PUSH BX MOV BX,DI DELAY1: AGAIN: LOOP AGAIN DEC BX JNZ DELAY1 POP BX POP AX RETDELAY ENDP;-;-;子程序 piano;-PIANO PROC MOV DL,0AH MOV AH,2 INT 21HLP: MOV AH,1 INT 21H ;输入一个字符HIGH1: CMP AL,31H JNE HIGH2 MOV DI,523 JMP SOUNDHIGH2: CMP AL,32H JNE HI

13、GH3 MOV DI,587 JMP SOUNDHIGH3: CMP AL,'3' JNE HIGH4 MOV DI,659 JMP SOUNDHIGH4: CMP AL,'4' JNE HIGH5 MOV DI,698 JMP SOUNDHIGH5: CMP AL,'5' JNE HIGH6 MOV DI,784 JMP SOUNDHIGH6: CMP AL,'6' JNE HIGH7 MOV DI,880 JMP SOUNDHIGH7: CMP AL,'7' JNE MIDDLE1 MOV DI,988 JMP

14、 SOUNDMIDDLE1: CMP AL,'Q' JNE MIDDLE2 MOV DI,262 JMP SOUNDMIDDLE2: CMP AL,'W' JNE MIDDLE3 MOV DI,294 JMP SOUNDMIDDLE3: CMP AL,'E' JNE MIDDLE4 MOV DI,330 JMP SOUNDMIDDLE4: CMP AL,'R' JNE MIDDLE5 MOV DI,349 JMP SOUNDMIDDLE5: CMP AL,'T' JNE MIDDLE6 MOV DI,392 JMP

15、 SOUNDMIDDLE6: CMP AL,'Y' JNE MIDDLE7 MOV DI,440 JMP SOUNDMIDDLE7: CMP AL,'U' JNE LOW1 MOV DI,494 JMP SOUNDLOW1: CMP AL,'A' JNE LOW2 MOV DI,131 JMP SOUNDLOW2: CMP AL,'S' JNE LOW3 MOV DI,147 JMP SOUNDLOW3: CMP AL,'D' JNE LOW4 MOV DI,165 JMP SOUNDLOW4: CMP AL,&#

16、39;F' JNE LOW5 MOV DI,175 JMP SOUNDLOW5: CMP AL,'G' JNE LOW6 MOV DI,196 JMP SOUNDLOW6: CMP AL,'H' JNE LOW7 MOV DI,220 JMP SOUNDLOW7: CMP AL,'J' JNE QUIT1 MOV DI,247 JMP SOUNDQUIT1: CMP AL,1BH JE QUIT2 JMP LPSOUND: MOV DX, 12H MOV AX, 34DCH DIV DI ;设置计数初值 OUT 42H,AL MOV AL,AH OUT 42H,AL IN AL , 61H OR AL , 3 OUT 61H , AL ;打开扬声器 POP DI MOV CX,20000 CALL DELAY ;调用延时子程序 IN AL ,61H AND AL ,0FCH

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

最新文档

评论

0/150

提交评论