汇编语言课程设计说明1.docx
- 文档编号:26992884
- 上传时间:2023-06-24
- 格式:DOCX
- 页数:18
- 大小:31.37KB
汇编语言课程设计说明1.docx
《汇编语言课程设计说明1.docx》由会员分享,可在线阅读,更多相关《汇编语言课程设计说明1.docx(18页珍藏版)》请在冰豆网上搜索。
汇编语言课程设计说明1
汇编语言课程设计说明书
题目:
学生成绩管理系统
设计者:
郑雄
学号:
301060144
专业班级:
计算机网络
指导教师:
罗成建
所属系部:
计算机科学系
2007年12月27日
汇编语言课程设计任务书
一、课程设计目的
“汇编语言”课程设计是计算机应用开发人员必须接受的最重要的专业训练之一,是计算机软、硬件的基础,利用汇编语言编写程序可以是我们更清楚地了解计算机是怎样完成复杂工作的,理解计算机对系统中各种设备的调度,从而从根本上认识计算机的工作原理,对课程所学理论知识的深化和提高。
因此,课程设计要求同学们熟悉汇编语言的编程,BIOS中断调用、dos系统功能调用、磁盘数据的查询、存取等相关知识。
通过课程设计,可以提高运用汇编语言编程解决实际问题的能力,为以后的学习和系统开发奠定良好的基础。
二、课题名称:
简易文本编辑器
三、设计内容与基本要求
1、在出现的界面中输入任意文本内容,利用DEL键、BACKSPACE键、HOME键、END键、上下左右光标键可对文本进行全屏幕编辑;
2、按f1键激活菜单file,下移光标,可菜单选择new,open,save,saveas,exit;
3、按F10键激活帮助,按ESC键退出帮助。
4、自行选择增加一些功能。
课程设计说明书应包括以下内容:
(16k纸)
1、对设计课题进行简要阐述,并说明设计任务及具体要求
2、论述系统设计方案
3、系统流程图
4、各功能模块设计说明、设计实现过程及源程序
5、能够较熟练地应用一种编辑软件编写程序,掌握dos系统软件设计的基本方法
6、课程设计说明书应内容完整、字迹工整、图表整齐规范、数据详实
7、课程设计总结
8、字数4000左右
9、参考文献(至少列写3篇文献)
网上下载“《汇编语言课程设计案例精编》源代码”
三、课程设计说明书装订顺序
1、封面
2、任务书
3、目录
4、设计说明书正文
目录
一、封面设计……………………………………….1
二、任务书及设计要求…………………………….2
三、课程设计内容………………………………….3
四、源程序代码…………………………………….4
五、设计流程图…………………………………….12
(一)显示部分
(二)光标位置
(三)接受字符
(四)插入部分
(五)查询部分
(六)删除部分
六、设计心得…………………………………………12
打字练习程序
宏*初始化*
writealetterto(y,x)withnumtimes
如果deta=dl,则横向打印字符,如果deta=dh则竖向打印字符
Int_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
隐藏光标
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,''
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,''
jzpause
pass:
popcx
inccx
cmpcx,speed;循环speed次,所以speed越大速度越慢
jnedl1;若输入不正确,则继续循环,继续下落,等待击建
jmperase;正确则清楚下落的字母
暂停,一直循环,再次输入为空格则解除暂停
pause:
pushdx
movah,6
movdl,0ffh
int21h
popdx
cmpal,''
jnepause
jmppass
使上面一行的字符消失,其Y值增加,第二次循环的时候在下一行显示
erase:
movah,2
int10h
movah,9
moval,''
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,''
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
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,BYxiejian
Mesg2db15,No.20032252
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
设计心得:
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 汇编语言 课程设计 说明
![提示](https://static.bdocx.com/images/bang_tan.gif)