汇编语言 两只老虎 实验报告资料Word文件下载.docx
- 文档编号:15001109
- 上传时间:2022-10-26
- 格式:DOCX
- 页数:15
- 大小:114.28KB
汇编语言 两只老虎 实验报告资料Word文件下载.docx
《汇编语言 两只老虎 实验报告资料Word文件下载.docx》由会员分享,可在线阅读,更多相关《汇编语言 两只老虎 实验报告资料Word文件下载.docx(15页珍藏版)》请在冰豆网上搜索。
对8253编程时,先要设定控制字,以选择计数器,确定工作模式和计数值的格式,每个计数器由三个引脚与外部联系,CLK为时钟输入端,GATA为门控制信号输入端,OUT为计数/定时信号输入端。
每个计数器是以倒计数的方式计数,也就是说,从计数初值开始逐次减1,直到减为0为止。
端口地址与计数器的关系:
40H
选中计数器0:
作为定时器为系统日时钟提供计时基准
41H
选中计数器1:
作为定时器使用
42H
选中计数器2:
用来控制扬声器发声
43H
公用的控制器:
分别对三个寄存器和控制器寻址
那么,如何触动扬声器发出声音呢?
原来PC机的主音箱上装有一只小喇叭,由定时器8253和并行接口芯片8255(可编程外围接口芯片)控制其发声,8255包括三个8位寄存器,两个用于输入功能,一个用于输出功能。
输入寄存器分配的I/O端口地址为60H和62H,输出寄存器分配的I/O端口地址为61H。
8253定时器计数器2连接到扬声器,其电路如下:
8253DRIVER
1.9318MHZCLK喇叭
OUT2
8255
PB0GATE2
PB1
装入计数器2的计数初值为533H(1.19318MHz/896Hz=1331=533H),这样,得到的控制字为10110110B=0B6H,即选中计数器2,读/写,工作方式三(方波发声器),二进制。
计数器2的初始化程序为:
MOVAL,0B6H
OUT43H,AL
1)计算计数值程序段:
MOVDI,给定频率
MOVDX,12H
MOVAX,34DCH
DIVDI
AX中即为计数值。
2)打开扬声器发声,8255PB0,PBI送出高电平:
INAL,61H
ORAL,3
OUT61H,AL
3)关闭扬声器,停止发声:
INAL,61H
ANDAL,0FCH
OUT61H,AL
两只老虎的音频表定义在数据段中,如下:
STACKSEGMENT
DW100DUP(?
)
STACKENDS
DATASEGMENT
MUSICDW2DUP(262,294,330,262);
频率表,1231;
1231
DW2DUP(330,349,392);
345;
DW2DUP(392,440,392,349,330,262);
565431;
565431
dw2dup(294,196,262),0;
251;
251,0表示结束
TIMEDW10DUP(250*50),500*50,250*50,250*50,500*50;
节拍表
DW2DUP(120*50,120*50,120*50,120*50,250*50,250*50)
DW2DUP(250*50,250*50,500*50)
NEQU32;
32个音符
DATAENDS
二.实验目的:
学习8253计数器2输出方波信号用以驱动扬声器发声的原理,通过程序设置计数器2的输出波形的频率和延续时间,控制扬声器的音调和发生长短。
三.实验内容:
1.设计程序让微机演奏一段两只老虎的乐曲。
2.思考如何让PC机演奏一遍,两遍以及数遍这段两只老虎的乐曲,并修改程序实现。
四.实验报告:
整理出运行正确的源程序清单(加以中文注释),并给出详细程序流程图。
开始
输入1~9的数字选择循环次数
打开扬声器
调用延时子程序
关闭扬声器
MDB?
SAYDB'
Pleaseinputthetimes(1~9)youwant:
'
'
$'
SAY2DB'
1.TIGERS2.PIANO:
SAY3DB'
ERROR'
CODESEGMENT
ASSUMECS:
CODE,DS:
DATA,ES:
DATA,SS:
STACK;
说明代码段、数据段、附;
加段、堆栈段
START:
MOVAX,DATA;
设置数据段的段地址
MOVDS,AX
MOVES,AX
AGA:
LEADX,SAY2
MOVAH,9
INT21H;
输出“1.TIGERS2.PIANO”
MOVAH,1
输入一个字符
CMPAL,31H
JETIGERS;
与一比较,相等则转TIGERS
CMPAL,32H
JEPIANO2;
与二比较,相等则转PIANO
MOVDL,0AH;
以下三行输入一个回车
MOVAH,2
INT21H
LEADX,SAY3
显示输出'
JMPAGA
TIGERS:
LEADX,SAY
输出“TINGJIBIAN:
$”
CALLINPUT
A:
CALLSONG
DECM
JNZA;
M自减1
JMPQUIT2
PIANO2:
CALLPIANO
;
---------------------------------------------------------------------------------------------------------------------
子程序INPUT
输入
---------------------------------------------------------------------------------------------------------------------
INPUTPROC
LEASI,M
SUBAL,30H;
将ASCII码转为16进制数
MOV[SI],AL
RET
INPUTENDP
子程序SONG
播放音乐
SONGPROC
MOVAL,0B6H
OUT43H,AL;
选择计数器2
LEASI,MUSIC
LEADI,TIME
MOVCX,N;
循环次数
SONG2:
PUSHCX
PUSHDI
MOVDI,[SI]
MOVDX,12H
MOVAX,34DCH
DIVDI;
设置计数初值
OUT42H,AL
MOVAL,AH
INAL,61H
ORAL,3
OUT61H,AL;
POPDI
MOVCX,20000
CALLDELAY;
INAL,61H
ANDAL,0FCH
OUT61H,AL;
ADDSI,2
ADDDI,2
POPCX
LOOPSONG2
SONGENDP
子程序DELAY
延时子程序
DELAYPROC
PUSHAX
PUSHBX
MOVBX,[DI]
DELAY1:
AGAIN:
LOOPAGAIN
DECBX
JNZDELAY1
POPBX
POPAX
DELAYENDP
子程序piano
------------------------------------------------------------------------
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 汇编语言 两只老虎 实验报告资料 老虎 实验 报告 资料