汇编课程设计报告.docx
- 文档编号:8006391
- 上传时间:2023-01-27
- 格式:DOCX
- 页数:20
- 大小:62.88KB
汇编课程设计报告.docx
《汇编课程设计报告.docx》由会员分享,可在线阅读,更多相关《汇编课程设计报告.docx(20页珍藏版)》请在冰豆网上搜索。
汇编课程设计报告
黄冈师范学院
课程设计报告
课程名称:
微机原理与汇编语言
设计题目:
打字练习程序
院系:
计算机科学与技术学院
专业:
计算机科学与技术
班级:
计科0702班
姓名:
黄亚琦
学号:
200726140217
日期:
09年6月8日~09年12月31日
指导教师:
朱泽民
成绩:
第一章需求分析1
1.本课程设计题目1
2.本课程设计要求及任务1
3.课程设计思想1
4.开发工具2
第二章概要设计2
1.分析2
第三章详细设计2
1.程序流程图3
2.软件设计程序4
第四章调试与操作说明14
第五章课程设计总结与体会16
第一章需求分析
1.本课程设计题目
打字练习程序
2.本课程设计要求及任务
基本要求:
(1)实现打字练习功能;
(2)有一定的图形界面;
(3)能够进行成绩管理更好。
任务:
进行打字练习的程序设计,将这样的一个简单游戏用汇编语言呈现出来。
3.课程设计思想
主函数中调用的子函数:
1.在显示之前显示清屏调用CLEAR,
2.用来选择难度的子函数:
INPUT,
3.若判断出错,则跳转到子函数:
ERROR,
4.游戏开始的子程序:
GAME-START,
5.控制字母落下的子程序:
FALL,
6.在FALL中会调用到RANDOM,
7.暂停,一直循环,再次输入为空格则解除暂停PAUSE,
8.使上面一行的字符消失,其Y值增加,第二次循环的时候在下一行显示ERASE
9.击中后处理TO_HIT.
4.开发工具
实验程序的开发工具编辑器.
编辑器采用Masmforwindows。
:
第二章概要设计
1.分析
打字练习是一个很常见的游戏,当然会存在一个主页,即菜单。
还会有游戏界面,对于游戏版块的设计,要包含打字练习和分数每当一个字母掉下时,若输入的字母正确,字母变成黄色,有响铃,且重新掉下字母,分数加一,若字母在到达底线时还没有正确的字母输入,则当字母到达底线时新的字母落下,此时分数不进行加减。
第三章详细设计
1.程序流程图
2.软件设计程序
Init_gamemacrox,y,letter,deta,num,sign
movcx,00h
movdh,x
movdl,y
sign:
movah,02h
movbh,00h
int10h
;INT10h/AH=0Ah-writecharacteronlyatcursorposition.
;input:
;AL=charactertodisplay.
;BH=pagenumber.
;CX=numberoftimestowritecharacter.
pushcx
movah,0ah
moval,letter
movbh,00h
movcx,01h
int10h
popcx
inccx
incdeta
cmpcx,num
jnesign
endm
;;;;;;;;;;;;;;;;;;;;;;;;;;
;;宏清屏
;;;;;;;;;;;;;;;;;;;;;;;;;;
;int10h\ah=06hscrollupwindow
;AL=numberoflinesbywhichtoscroll(00h=clearentirewindow).
;BH=attributeusedtowriteblanklinesatbottomofwindow.7h=0111blightgray
;CH,CL=row,columnofwindow''''supperleftcorner.
;DH,DL=row,columnofwindow''''slowerrightcorner.
;
clear_screenmacrox1,y1,x2,y2
movah,06h
moval,00h
movbh,07h
movch,x1
movcl,y1
movdh,x2
movdl,y2
int10h
;int10h\ah=02hsetcursorpositionat(dh,dl)
;DH=row.
;DL=column.
;BH=pagenumber(0..7).
movah,02h
movbh,00h
movdh,00h
movdl,00h
int10h
endm
;;;;;;;;;;;;;;;;;;;;
SHOWmacrop1,p2,p3
localNext
movch,0
movcl,p1
movbx,7
movsi,offsetp1
incsi
movdh,p2
movdl,p3
Next:
movah,2
int10h
pushcx
movcx,1
moval,[si]
movah,9
int10h
popcx
incdl
incsi
loopNext
endm
DATASEGsegment
Mesg1db15,"BYmarsh"
Mesg2db15,"No.20091001"
Mesg4db11,"Select:
"
Menu1db11,"1.Easy"
Menu2db11,"2.Hard"
hotkey1db11,"ESCtoMenu"
hotkey2db14,"SPACEtopause"
hotkey3db18,"Anykeytostart!
!
"
let_basedb"a";
letterdb2dup(?
)
speeddw?
800d,400d
scoremsgdb6,"SCORE:
"
hit_sumdb?
0
exitmegdb21,"Thankyouforplaying"
DATASEGENDS
STACKSEGMENTPARASTACK"STACK"
db64dup(0)
STACKENDS
CODESEGSEGMENT
ASSUMEDS:
DATASEG,CS:
CODESEG
START:
MOVAX,DATASEG
MOVDS,ax
clear_screen00d,00d,24d,79d
;隐藏光标
movcx,0
movah,1
orch,00010000b
int10h
SHOWMesg1,11d,33d
SHOWMesg2,13d,33d
movah,7
int21h
Menu:
clear_screen00d,00d,24d,79d
SHOWMenu1,12d,29d
SHOWMenu2,13d,29d
SHOWMesg4,16d,29d
Input:
movah,2;选择难度
movdh,16d
movdl,40d
int10h
movbl,7
movah,1
int21h
cmpal,1bh
jeExit
pushax
movah,1
int21h
cmpal,0dh
popax
jneError
cmpal,"1"
jeeazy
cmpal,"2"
jehard
jmpError
eazy:
movax,speed+2
movspeed,ax
jmpGame_start
hard:
movax,speed+4
movspeed,ax
jmpGame_start
Error:
movah,2
movdh,16d
movdl,29d
int10h
movah,0ah
moval,20H
movbl,0
movcx,2
int10h
jmpInput
Game_start:
clear_screen00d,00d,24d,79d
SHOWhotkey1,11,30
SHOWhotkey2,13,30
SHOWhotkey3,15,30
movah,7;向下滚屏
int21h
clear_screen00d,00d,24d,79d
;画墙壁
;上面用字符0ah填充y++
;Init_game00d,00d,0ah,dl,80d,nextsign1
;下面,用字符0ah填充y++
Init_game24d,24d,0ah,dl,31d,nextsign2
;左边用字符1ah填充x++
Init_game00d,24d,0ah,dh,25d,nextsign3
;右边用字符1ah填充x++
Init_game00d,55d,0ah,dh,25d,nextsign4
SHOWscoremsg,10,60
moval,hit_sum+1
movhit_sum,al
callprint_score
Fall:
callRandom
movdl,ah;获得随机数,保存至dl中dl为字母下落的y坐标
adddl,26;基数为26,使其在范围之内
moval,let_base;把let_base的字母传给letter
movletter,al;let_tab=letter
;moval,let_tab+1
;movletter+1,al
addletter,ah;然后加上随机数值
;addletter+1,ah
movdh,0
again:
cmpdh,24;dh计数
jeOnfloor
movah,2
movbh,0
int10h;curser
movah,9
moval,letter
movbl,7
movcx,1
int10h;printletter
delay:
movcx,0
dl1:
pushcx
movcx,50000
dl2:
loopdl2
;dl=0ffh表示输入,al=输入字符,否则无输入al=0
pushdx
movah,6
movdl,0ffh
int21h
popdx
jzpass;无输入则直接下落
cmpal,letter
jzto_hit
cmpal,1bh;=ESCtoquit
jzMenu
cmpal,20h
jzpause
pass:
popcx
inccx
cmpcx,speed;循环speed次,所以speed越大速度越慢
jnedl1;若输入不正确,则继续循环,继续下落,等待击建
jmperase;正确则清楚下落的字母
;暂停,一直循环,再次输入为空格则解除暂停
pause:
pushdx
movah,6
movdl,0ffh
int21h
popdx
cmpal,20h
jnepause
jmppass
;使上面一行的字符消失,其Y值增加,第二次循环的时候在下一行显示
erase:
movah,2
int10h
movah,9
moval,20h
movcx,1
movbl,0
int10h
incdh;y++
jmpagain
;;;;到达地板之后响铃
Onfloor:
callbell
jmpFall
;击中后处理
to_hit:
;用黄色高亮显示击中的字符
pushbx
pushcx
movbh,00h
movbl,0eh;0eh黄色
movcx,01h
movah,09h
int10h
popcx
popbx
;延时以能看到高亮显示
callsleep
callbell
movah,2
int10h
movah,9
moval,20h
movcx,1
movbl,0
int10h
inchit_sum;hit_sum++
callprint_score;printscore
jmpFall;重新产生字母下落
Exit:
clear_screen00d,00d,24d,79d
SHOWexitmeg,12,29
movah,7
int21h
MOVAH,4CH
INT21H
;;;;;;;;;;;;;;;;;functions;;;;;;;;;;;;;;;;;;
print_scoreproc
pushax
pushdx
pushcx
cmphit_sum,10
jaetwo
movah,2
movdh,12
movdl,63
int10h
movah,9
movbl,7
moval,hit_sum
addal,"0"
movcx,1
int10h
jmpA
;;大于十有两位数,要区别对待
two:
moval,hit_sum
movah,0
movdl,10
divdl
pushax
movah,2
movdh,12
movdl,62
int10h;打印十位
movah,9
movbl,7
addal,"0"
movcx,1
int10h
popax
moval,ah
movah,2
movdh,12
movdl,63
int10h
movah,9
movbl,7
addal,"0"
movcx,1
int10h;打印个位
A:
popcx
popdx
popax
ret
print_scoreendp
;;;;;;;;;;;;;;;;;;;;;;;;;;;
;将获得的随机数存在ah中
;获得系统时间dh=秒dl=百分秒
Randomproc
pushcx
pushdx
movah,2ch
int21h
adddh,dl
moval,dh
movah,0
movdl,26;26个字母故模26
divdl
popdx
popcx
ret
Randomendp
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
;延时程序,用了三个嵌套循环
sleepproc
pushcx
movcx,300d
lop1:
pushcx
movcx,300d
lop2:
pushcx
movcx,300d
lop3:
nop
nop
looplop3
popcx
looplop2
popcx
looplop1
popcx
ret
sleependp
;;;;;;;;;;;;;;;;;;;
;响铃
bellproc
pushdx
pushax
pushcx
movdx,30000d;turnon/of30000dtimes
inal,61h
andal,11111100b
sound:
xoral,2
out61h,al
movcx,50h;valueofwait
wait1:
loopwait1
decdx
jnesound
popcx
popax
popdx
ret
bellendp
CODESEGENDS
ENDSTART
第四章调试与操作说明
我们采用MasmforWindows运行这个程序,以下为该程序的运行界面:
首页界面:
选择界面:
菜单界面:
游戏运行界面:
第五章课程设计总结与体会
通过本次课程设计,了解了一个汇编程序开发的过程,从界面设计到代码编写,都遇到了很多的问题,例如屏幕显示字符的原理,如何把数据存入内存,如何从内存中调用数据的方法。
曾经都难倒我,不过通过对书本的了解,还有同学的帮助,最终解决了这些问题。
参考资料:
1.钱晓捷《新版汇编语言程序设计》电子工业出版社
2.王爽《汇编语言》清华大学出版社
3.钱晓捷陈涛《16/32位微机原理,汇编语言及接口技术》机械工业出版社。
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 汇编 课程设计 报告