- 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
- 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
- 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
- 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们。
- 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
- 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
《汇编语言程序设计》课程设计报告明细表.doc
《汇编语言程序设计》课程设计报告明细表
一、设计目的
二、设计环境与工具
三、设计任务
四、设计完成时间
五、程序设计算法说明
六、程序设计框图
七、源程序清单
八、运行结果
九、设计结果测试、分析、体会
产生机关枪声
1 设计目的
a.通过该课程设计,熟悉操作系统的功能调用;
b.进一步了解汇编语言控制计算机硬件的方法;
c.提高汇编语言应用程序的设计能力。
2 设计环境与工具
DOS操作系统、文本编辑器,masm、link、debug
3 设计任务
产生机关枪声,枪声时间可控,由键盘输入控制值,按“Q”键退出。
4 设计完成时间
2005年12月31日
5 程序设计算法说明
5.1 主程序设计
数据段说明:
freq dw 90 ;存放枪声频率
col db 0 ;
row db 0
time label byte ;接收用户输入的时间
t_max db 2
t_act db ?
t_fld db 2 dup(?)
key label byte ;存放用户输入的字符(a / q)
k_max db 2
k_act db ?
k_fld db 2 dup (?)
以下程序段用于设置屏幕大小及背景色:
mov ah,00 ;320*200彩色屏幕
mov al,04
int 10h
mov ah,0bh ;背景色
mov bh,00
mov bl,1
int 10h
枪声产生是调用gensound子程序,用循环结构,当用户输入期望产生的枪声次数后,实际产生的枪声次数为用户输入值的10倍:
lea si,t_fld
mov al,[si] ;取用户输入的枪声控制值
sub al,30h
mov bl,10
mul bl ;乘以10
mov cl,al ;送给CX以控制循环次数
5.2 产生声音子程序的设计
在计算机中有一个可编程时间间隔定时器8253/54(programmable interval timer,PIT)_BEEP处理程序调用BEEP子程序,使扬声器发出“嘟嘟”的信号。BX中计数值由ERROR_BEEP程序设置为533H,然后BEEP程序又将8255的输出寄存器(I/O断口为61H)的PB0和PB1置1,使扬声器接通并发出音频为896Hz的声音。
实际上BEEP是一个很好的通用发声程序,可以利用并修改BEEP,使其产生任一频率的声音。此时要做两点修改:首先,BEEP程序只能产生896Hz的声音,通用发声程序应能产生任一频率的声音。其次,BEEP产生声音的持续时间(音长)只能是0.5s的倍数,而通用发声程序希望声音的持续时间更易于调整。
5.2.1 机关枪声音的频率
给计数器2装入计数值533H能产生896Hz的生音(1.1931MHz/896Hz=1331=533H)① 在8586/54中的43端口送入一个控制字0B6H),该控制字对定时器2进行初始化,使定时器2准备接受计数初值。
②在8586/54中的42端口(Timer2)③把输出端口61H的0、))①不需要指定频率;②不需要对端口42和43送入数值;③不需要对端口61置数。因此仅需进行寄存器的保存和对延迟时间的设计。
5.4 清屏子程序的设计
5.4.1 控制光标
利用INT 10H的功能2设置光标位置。坐标位置的行号在DH寄存器中,列号设在DL中。如在320*200的显示方式中,坐标设在(0,0)是屏幕的左上角,(319,199)是屏幕的右下角。BH中包含被输出的页号,对单色显示器来说,页号总是0。
5.4.2 清屏
INT 10H功能6能使屏幕内容上卷指定的行,这个功能需要设置7个参数:
AL=上卷行数
AL=0全屏幕为空白
BH=卷入行属性
CH=左上角行号
CL=左上角列号
DH=右下角行号
DL=右下角列号
该子程序多次调用,每当产生一串枪声之后都会调用该子程序。当AL=0时,实际完成的工作是清除屏幕的功能,它将按AL中的Blank字符(0)使指定的窗口为空白。
6 程序框图
7 源程序清单
dataseg segment
mess1 db 40 dup(
文档评论(0)