汇编实验14.docx
《汇编实验14.docx》由会员分享,可在线阅读,更多相关《汇编实验14.docx(14页珍藏版)》请在冰豆网上搜索。
汇编实验14
暨南大学本科实验报告专用纸
课程名称汇编语言程序设计成绩评定
实验项目名称课程综合设计
一、实验目的和要求
1)利用本学期所学汇编知识完成一次综合设计。
2)熟悉各种输入、输出方法的调用方法。
设计一个打字练习软件,具体要求如下:
1)利用BIOS的屏幕窗口功能制作一个用户菜单,菜单包括:
①欢迎用语,提示按“ESC”键退出练习;②开始练习,给出练习句子;③显示成绩和时间;④退出用语
2)每次打字之前,屏幕上先显示出一个句子,然后打字员按照例句,将句中字符通过键盘输入。
这个过程反复进行。
利用BIOS16H键盘功能调用来判断输入是否正确,不正确给出标示;
3)利用DOS系统时间调用计时,屏幕上以min:
sec:
msec的格式显示出练习时间
4)练习句子定义在数据段中,定义10行,每行10个字符,区分大小写,分数根据准确率给出;允许中途退出,退出时给出提示语和选择,确定退出不给分和计时。
二、程序流程图(每题分开写)
三、源程序(每题分开写)
DSEGSEGMENT'DATA'
;addyourdatahere!
resdb0,0,0,'time:
'
mindb0,0,'min'
secdb0,0,'sec',10,13,'$'
timesdb0,0
string1db'WelcomeBABY!
',13,10,36
string2db'1toQUIT',13,10,36
string3db'2TOstart',13,10,36
string4db'No',13,10,36
string5db0
string6db'Pleasewritesuchsentences',13,10,36
;thedefinitionofthesentences
note0db'Hello!
Theme',13,10,36
note1db'abcdefghigklm',13,10,36
note2db'whatareyouns',13,10,36
note3db'aaaaaaaaaa',13,10,36
note4db'bbbbbbbbbbbbb',13,10,36
note5db'ccccccccccccc',13,10,36
note6db'globalhis',13,10,36
note7db'mmmmmmmmmmmmmm',13,10,36
note8db'kkkkkkkkkkkkk',13,10,36
note9db'nnnnnnnnnnnnn',13,10,36
lengthListdb13,13,14,10,14,13,11,12,13,13
outmsgdb'Yourgradeis',36
spacedb13,10
scoredb0
string6Timedw10
guangbiaomacrox,y//清屏
pushdx
pushbx
movdl,x
movdh,y
movbh,0
movah,02h;置光标位置BH=显示页号;DH:
DL=行:
列
int10h
popbx
popdx
endm
outputstrmacrostring
leadx,string
movah,09h
int21h
endm
DSEGENDS
SSEGSEGMENTSTACK'STACK'
db256DUP(0)
SSEGENDS
CSEGSEGMENT'CODE'
STARTPROCFAR
;setsegmentregisters:
MOVAX,DSEG
MOVDS,AX
MOVES,AX
;addyourcodehere
callDtishiyuju;//输出提示性语句
yaoqiu:
movah,0;//键盘功能调用,读键盘
int16h
cmpal,'1'
jzs0
cmpal,'2'
jzs1
jmps2
s1:
callexercise
movah,1
int21h
jmps0
s2:
guangbiao1,20
outputstrstring4
jmpyaoqiu
s0:
movah,4ch
xoral,al
int21h
end:
;////读取时间
movah,2ch
int21h
subcl,times
subdh,times+1
movtimes,cl
movtimes+1,dh
MOVAX,4C00h;exittooperatingsystem.
INT21h
STARTENDP
DrawUIproc
;cleartheentirescreen
pushax
pushdx
pushbx
pushcx
movah,07h
moval,0
movcl,0
movch,0
movbh,7
movdh,25
movdl,80
int10h
popcx
popbx
popdx
popax
ret
DrawUIendp
Dtishiyujuproc
;todrawthewelcomeinterface
guangbiao22
outputstrstring1
guangbiao12,8
outputstrstring3
guangbiao12,12
outputstrstring2;/////将提示性语句输出来
ret
Dtishiyujuendp
exerciseproc
mov[score],0
leasi,note0
subsi,3
ex:
dec[string6Time]
callDrawUI
guangbiao0,0
leadx,string6
movah,09h
int21h
addsi,3
guangbiao12,10
movdx,si
movah,09h
int21h
leadi,lengthList
adddi,string6Time
movcl,[di]
movch,0
guangbiao11,15
xordx,dx
judge:
movah,01h
int21h
cmp[si],al
jzaddpoint
cmpal,1bh
jz.endexercise
jmp.conti
addpoint:
incdl
jmp.conti
.conti:
incsi
loopjudge
add[score],dl
cmp[string6Time],0
jz.endexercise
jmpEX
.endexercise:
calldisplayresult
ret
exerciseendp
displayresultproc
callDrawUI///分数
cmpscore,100
jgeB1
cmpscore,90
jgeB2
cmpscore,80
jgeB3
cmpscore,70
jgeB4
jmpB5
B1:
movdl,'A'
jmpoutput
B2:
movdl,'B'
jmpoutput
B3:
movdl,'C'
jmpoutput
B4:
movdl,'D'
jmpoutput
B5:
movdl,'E'
jmpoutput
output:
pushdx
leadx,outmsg
movah,09h
int21h
popdx
movah,02h
int21h
ret
displayresultendp
CSEGENDS
ENDSTART;setentrypoint.
四、结果分析(对输入\输出部分截屏)
五、实验总结
十个打字练习的截图较多,因为是打一句,然后屏幕就清屏,于是就只截了几个