分支结构实验报告.docx

上传人:b****4 文档编号:5990706 上传时间:2023-05-09 格式:DOCX 页数:11 大小:92.57KB
下载 相关 举报
分支结构实验报告.docx_第1页
第1页 / 共11页
分支结构实验报告.docx_第2页
第2页 / 共11页
分支结构实验报告.docx_第3页
第3页 / 共11页
分支结构实验报告.docx_第4页
第4页 / 共11页
分支结构实验报告.docx_第5页
第5页 / 共11页
分支结构实验报告.docx_第6页
第6页 / 共11页
分支结构实验报告.docx_第7页
第7页 / 共11页
分支结构实验报告.docx_第8页
第8页 / 共11页
分支结构实验报告.docx_第9页
第9页 / 共11页
分支结构实验报告.docx_第10页
第10页 / 共11页
分支结构实验报告.docx_第11页
第11页 / 共11页
亲,该文档总共11页,全部预览完了,如果喜欢就下载吧!
下载资源
资源描述

分支结构实验报告.docx

《分支结构实验报告.docx》由会员分享,可在线阅读,更多相关《分支结构实验报告.docx(11页珍藏版)》请在冰点文库上搜索。

分支结构实验报告.docx

分支结构实验报告

天津大学

<<汇编语言程序设计>>课程设计

 

学院:

职业技术教育学院

学号:

3008212012

姓名:

黄立宁

班级:

1

指导教师:

谢永超

 

2010-4-26

内容简介

本程序为利用q、w、e、r、t、y、u、1-7作演奏音符制任意音乐的程序。

该程序能记录所演奏的音乐,能回放所演奏的音乐。

运行过程中,通过屏幕上显示的音符,输入一个不同的数发出不同的音调,即制作出不同的音乐。

每输入一数,屏幕上音符及提示闪烁一次,当输入数为9时,终止音乐的制作,将之前的音乐存入堆栈中,随后送入端口地址,即演奏出刚刚制作的音乐。

 

成绩:

教师签字:

 

目录

 

开发环境………………………………………………………………1

功能描述…………………………………………………………1

系统功能结构框图…………………………………………….2

程序代码……………………………………………………3

运行结果………………………………………………………11

课程设计体会…………………………………………………………12

参考文献…………………………………………………………13

 

题目:

键盘控制发声程序

----电子琴

一、开发环境

1.硬件环境

微型计算机一台

2.软件环境

WindowsXP操作系统

使用工具MASM5.0,要进行汇编语言的编辑和运行,需要以下工作环境:

⑴编辑程序,如EDIT.EXE、WORD

⑵汇编程序,如MASM.EXE

⑶连接程序,如LINK.EXE

⑷调试程序,如DEBUG.EXE

二、功能描述

利用q、w、e、r、t、y、u、1-7作演奏音符制任意音乐的程序。

该程序能记录所演奏的音乐,能回放所演奏的音乐。

运行过程中,通过屏幕上显示的音符,输入一个不同的数发出不同的音调,即制作出不同的音乐。

每输入一数,屏幕上音符及提示闪烁一次,当输入数为9时,终止音乐的制作,将之前的音乐存入堆栈中,随后送入端口地址,即演奏出刚刚制作的音乐。

三、系统功能结构图

(续上图):

四、程序代码

;利用q、w、e、r、t、y、u、1-7演奏音符的程序,能记录所演奏的音乐,能回放所演奏的音乐

;**********************************************************

DATASEGMENT

msgDB0DH,0AH,''

DB0DH,0AH,'[1234567]'

DB0DH,0AH,'[qwertyu]'

DB0DH,0AH,'_________________'

DB0DH,0AH,''

DB0DH,0AH,''

DB0DH,0AH,'*************************************'

DB0DH,0AH,'NOTICE'

DB0DH,0AH,'Press1-7tomakemusicandplayit.'

DB0DH,0AH,'Press9tointerrupt.'

DB0DH,0AH,'********************************','$'

;音调(后面用到-1判断音乐播是否放完)

sound_0DW-1

sound_11DW441,-1

sound_12DW495,-1

sound_13DW556,-1

sound_14DW589,-1

sound_15DW661,-1

sound_16DW742,-1

sound_17DW833,-1

sound_1DW882,-1

sound_2DW990,-1

sound_3DW1112,-1

sound_4DW1178,-1

sound_5DW1322,-1

sound_6DW1484,-1

sound_7DW1655,-1

timeDW25

DATAENDS

;**********************************************************

STACKSEGMENT

Db200DUP('STACK');将音符放入堆栈中

STACKENDS

;**********************************************************

CODESEGMENT

ASSUMEDS:

DATA,SS:

STACK,CS:

CODE;段说明

START:

MOVAX,DATA

MOVDS,AX

MOVaH,00;初始化显示方式

MOVAL,00

INT10H

;------------------定义一个显示宏

SHOWMACROb

LEADX,b

MOVAH,9;将以"$"结尾的字符串显示在屏幕上,并将入口参数字符串的首地址的段基址和偏移地址分别放入DS和DX中

INT21H

ENDM

;------------------定义一个声音宏

onesoundmacrosoundis,jumpis,letteris

CMPAL,letteris

JNZjumpis

LEASI,soundis

LEABP,DS:

time

CALLMUSIC

JMPinput

ENDM

;--------------------

showmsg;显示音符和提示

;--------------------

INPUT:

MOVAH,01H

INT21H;从键盘输入一个字符并显示

CMPAL,'9'

jnzgo

movah,4ch;若输入9则返回DOS,终止制作音乐

int21h

go:

onesoundsound_11,a0,'q'

a0:

onesoundsound_12,b0,'w'

b0:

onesoundsound_13,c0,'e'

c0:

onesoundsound_14,d0,'r'

d0:

onesoundsound_15,e0,'t'

e0:

onesoundsound_16,f0,'y'

f0:

onesoundsound_17,g0,'u'

g0:

onesoundsound_1,h0,'1'

h0:

onesoundsound_2,i0,'2'

i0:

onesoundsound_3,j0,'3'

j0:

onesoundsound_4,k0,'4'

k0:

onesoundsound_5,l0,'5'

l0:

onesoundsound_6,m0,'6'

m0:

onesoundsound_7,n0,'7'

n0:

onesoundsound_0,o0,al

o0:

jmpinput

;---------------------发声(将堆栈中的音符数据送到端口地址)

GENSOUNDPROCNEAR

PUSHAX

PUSHBX

PUSHCX

PUSHDX

PUSHDI

;时间间隔定时器(计数器2的初始化过程)

MOVAL,0B6H

OUT43H,AL;给公用的控制寄存器(地址为43H)赋值

MOVDX,12H

MOVAX,348ch;频率除数

DIVDI

OUT42H,AL

MOVAL,AH

OUT42H,AL

INAL,61H;扬声器驱动(61H为输出寄存器分配I/O端口号)

MOVAH,AL

ORAL,3

OUT61H,AL;打开扬声器

WAIT1:

MOVCX,3314;等待下一音符的到来

callwaitf

DELAY1:

DECBX;声音的延迟

JNZWAIT1

MOVAL,AH;关闭扬声器

OUT61H,AL

POPDI

POPDX

POPCX

POPBX

POPAX

RET

GENSOUNDENDP

;*******************************

waitfprocnear

pushax

waitf1:

inal,61h

andal,10h

cmpal,ah

jewaitf1

movah,al

loopwaitf1;CX=0时退出循环,继续键入音符制作音乐

popax

ret

waitfendp

;******************************

MUSICPROCNEAR

PUSHDS

SUBAX,AX

PUSHAX

FREG:

MOVDI,[SI]

CMPDI,-1;音乐是否放完

JEEND_MUS

MOVBX,DS:

[BP];将音符放入堆栈

CALLGENSOUND;调发声子程序

ADDSI,2

ADDBP,2

JMPFREG

END_MUS:

RET

MUSICENDP

CODEENDS

;*******************************

ENDSTART

五、运行结果

图1生成OBJ文件

图2生成EXE文件

图3运行结果

六、课程设计体会

这次课程设计使我对汇编语言有了更进一步的了解和熟悉,实际操作编写程序,并使之能在计算机上正确运行真的有点困难。

平时觉得只要把课本上的知识学会就好了,没想到一付诸实际就全没了头脑。

课程设计只是书本上知识的灵活运用,与所学的有相当大的联系,但又高于所学的。

一个看似简单的题目,要动手把它设计出来就十分困难。

所以以后要注意把从课本上所学到的知识与实际联系起来,灵活运用,举一反三。

同时通过本次汇编语言程序的课程设计,我学到了许多课上老师没讲到的知识,开拓了我的眼界。

课程设计不但让我巩固了所学知识,也使我把理论与实际从真正意义上结合起来,更重要的是增强了学习的兴趣,培养了我们借助互联网络搜集、查阅相关文献资料和组织材料的综合学习能力。

七、参考文献

[1]沈美明、温冬蝉编,IBM-PC汇编语言程序设计,北京:

清华大学出版社,2001.

[2]网址:

 

展开阅读全文
相关资源
猜你喜欢
相关搜索
资源标签

当前位置:首页 > 工程科技 > 能源化工

copyright@ 2008-2023 冰点文库 网站版权所有

经营许可证编号:鄂ICP备19020893号-2