汇编课程设计报告.docx
- 文档编号:10220671
- 上传时间:2023-05-24
- 格式:DOCX
- 页数:11
- 大小:44.83KB
汇编课程设计报告.docx
《汇编课程设计报告.docx》由会员分享,可在线阅读,更多相关《汇编课程设计报告.docx(11页珍藏版)》请在冰点文库上搜索。
汇编课程设计报告
燕山大学
课程设计报告
汇编语言与接口课程设计
学院信息学院
年级专业级计算机
学生姓名
指导教师
提交日期2014
摘要
本次课设一共分为两个部分,第一部分是汇编语言,考察掌握汇编语言的熟练程度,了解汇编程序、连接程序、DOS系统装入和返回功能。
第二部分为接口,根据所用接口电路芯片设计出完整的接口电路及程序,了解汇编语言和硬件的关系,用8254定时器发出频率使扬声器发声。
关键词 DOSWmd86
目录
摘要I
AbstractII
第1章绪论1
1.1课题内容1
1.1.1光标轨迹程序draw要求1
1.1.2乐曲程序要求1
第2章光标轨迹程序draw1
2.1程序1
2.2结果截图3
第3章乐曲程序5
3.1设计重点5
3.2乐曲简谱.........................................................................................5
3.3程序................................................................................................6
结论10
参考文献11
第1章绪论
1.1课题内容
汇编语言题目是光标轨迹程序draw,接口技术题目是乐曲程序。
1.1.1光标轨迹程序draw要求
程序能在屏幕上画出光标移动的轨迹,画城墙,水平线等图。
光标的移动受键盘上光标键的控制,如果键入ESC键,则程序结束,返回DOS。
1.1.1.1乐曲程序要求
利用定时器产生声音的方法编写程序,使PC机奏出《两只老虎》的乐曲。
第2章光标轨迹程序draw
2.1程序
TITLEDRAW---PROGRAMTODRAWONSCREENWITH
UPEQU48H
DOWNEQU50H
RIGHTEQU4DH
LEFTEQU4BH
BLOCKEQU41H
ESC1EQU1BH
DATASEGMENTAT0B800H
W_BUFFLABELWORD
B_BUFFDB80*25*2DUP(?
)
DATAENDS
CODESEGMENT
ASSUMECS:
CODE,DS:
DATA
START:
MOVAX,DATA
MOVDS,AX
MOVCX,80*25
MOVBX,0
CLEAR:
MOVDS:
[W_BUFF+BX],0700H
INCBX
INCBX
LOOPCLEAR
MOVCH,12D
MOVCL,40D
GET_CHAR:
MOVAH,0
INT16H
CMPAL,ESC1
JZEXIT
MOVAL,AH
CMPAL,UP
JNZNOT_UP
DECCH
NOT_UP:
CMPAL,DOWN
JNZNOT_DOWN
INCCH
NOT_DOWN:
CMPAL,RIGHT
JNZNOT_RIGHT
INCCL
NOT_RIGHT:
CMPAL,LEFT
JNZCHAR
DECCL
CHAR:
MOVAL,160D
MULCH
MOVBL,CL
ROLBL,1
MOVBH,0
ADDBX,AX
MOVAL,BLOCK
MOVDS:
[B_BUFF+BX],AL
JMPGET_CHAR
EXIT:
MOVAH,4CH
INT21H
CODEENDS
ENDSTART
2.2结果截图
把BLOCK的值改为30H时(即0的ASCII码),运行结果为下图:
退出时界面出现如下提示:
第3章乐曲程序
3.1设计重点
(1)乐谱中的每个音符具有音高和音长两种属性,按照乐谱将每个音符的频率和节拍定义成两个数据表,程序从频率表中取出一个音符的频率值以产生一定音高的声音,同时取出相应的节拍计数值以控制这一频率的声音延长的时间。
(2)每个音符的频率值Freq经过转换后送入定时器的42H端口,以产生相应频率的脉冲。
转换的公式为:
533H*896+Freq=1234DCH+freq
(3)节拍时间表中存放的计数值是音长的1\10,如2拍的音长定为0.5秒,对应的计数值应为50,1拍的音长是0.25秒,对应的计数值为25。
然后控制LOOP指令反复执行2800*n次来取得音符的延长时间(n为音长所对应的计数值)。
(4)乐曲演奏完后,同样要完成对61H端口的复位操作以避免死机。
10ms延迟时间指令:
WAIT:
MOVCX,2800
DELAY:
LOOPDELAY
转换的公式为:
533H×896÷Freq=123280H÷Freq(或是12348CH÷Freq)
3.2乐曲简谱
3.3程序
COUNT0EQU06C0H;8254计数器0端口地址=IOY3+00H
COUNT1EQU06C2H;8254计数器1端口地址=IOY3+02H
COUNT2EQU06C4H;8254计数器2端口地址=IOY3+04H
CONTROLEQU06C6H;8254控制寄存器端口地址=IOY3+06H
DATASEGMENT
ERRORMDB0DH,0AH,'INPUTERROR!
$'
MUSLISTDB0DH,0AH,'EOReTOEXITSORsTOSTART'
DB0DH,0AH,'$'
FREGDW2dup(262,294,330,262);频率表
DW2dup(330,349,392)
DW2dup(392,440,392,349,330,262)
DW2dup(294,196,262),-1
TIMEDW8dup(4);时间表
DW2dup(4,4,8)
DW2dup(2,2,2,2,4,4)
DW2dup(4,4,8)
DATAENDS
CODESEGMENT
ASSUMEDS:
DATA,CS:
CODE
START:
MOVAX,DATA;数据段装入段寄存器DS
MOVDS,AX
MOVDX,CONTROL;初始化8254工作方式
MOVAL,36H;定时器0、方式3
OUTDX,AL
showmacroa
LEADX,a
MOVAH,09h
INT21H
endm
showMUSLIST
INPUT:
MOVAH,01H;键盘输入字符并回显
INT21H
CMPAL,'E'
JZexit;退出
CMPAL,'e
JZexit
CMPAL,'S'
JZA
CMPAL,'s'
JZA
JNZretu2
A:
CALLMUSIC
retu2:
showERRORM;宏调用,输入错误,重新输入
retu1:
;宏调用,输入正确,演奏完后重新输入
showMUSLIST
JMPINPUT
exit:
MOVDX,CONTROL;初始化8254工作方式
MOVAL,11H;定时器0、方式3
OUTDX,AL
MOVAL,0
MOVDX,COUNT0
OUTDX,AL;装入计值
MOVAH,4CH
INT21H
MUSICPROC
MOVSI,OFFSETFREG;装入频率表起始地址
MOVDI,OFFSETTIME;装入时间表起始地址
CALLPLAY
RET
MUSICENDP
PLAY:
MOVAH,1
INT16H
JZSOUND
JMPINPUT
SOUND:
MOVDX,0FH;输入时钟为1MHz,1M=0F4240H
MOVAX,4240H
DIVWORDPTR[SI];取出频率值计算计数初值,
;0F4240H/输出频率
MOVDX,COUNT0
OUTDX,AL;装入计数初值
MOVAL,AH
OUTDX,AL
MOVDL,[DI];取出演奏相对时间,调用延时子程序
CALLDELAY
ADDSI,2
ADDDI,2
CMPWORDPTR[SI],-1;判断是否到曲末?
JEA
JMPPLAY
END_MUS:
RET
DELAYPROC;延时子程序
D0:
MOVCX,0010H
D1:
MOVAX,0FF0H
D2:
DECAX
JNZD2
LOOPD1
DECDL
JNZD0
RET
DALLYENDP
CODEENDS
ENDSTART
结论
通过本次课设,更加了解了汇编程序与硬件的关系,还知道了定时器发声的原理,从看到题目时的迷茫,在网上,书本上查阅资料,到一点一点的知道该怎么做,逐个击破问题,在老师和同学的帮助下,顺利完成了课程设计。
通过音乐程序设计,熟悉并掌握用汇编语言编程的方法和特点,进一步熟悉汇编语言的结构和使用方法,对程序的编写和阅读有了很大进步。
参考文献
《IBM—PC汇编语言程序设计实验教程》沈美明温冬婵张赤红清华大学出版社
《IBM—PC汇编语言程序设计》沈美明温冬婵清华大学出版社
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 汇编 课程设计 报告
![提示](https://static.bingdoc.com/images/bang_tan.gif)