微机原理课程设计电话薄设计程序清单Word格式.docx
《微机原理课程设计电话薄设计程序清单Word格式.docx》由会员分享,可在线阅读,更多相关《微机原理课程设计电话薄设计程序清单Word格式.docx(19页珍藏版)》请在冰豆网上搜索。
![微机原理课程设计电话薄设计程序清单Word格式.docx](https://file1.bdocx.com/fileroot1/2022-12/1/820b9949-211d-461b-8931-264548b67845/820b9949-211d-461b-8931-264548b678451.gif)
xinmingstrdb'
Name:
deyustrdb'
Deyu:
tiyustrdb'
Tiyu:
lilunstrdb'
Lilun:
shijianstrdb'
Shijian:
zongcestrdb'
Zongce:
disstr1db'
Theallrecordslistasfollows!
'
0dh,0ah,'
disstr3db'
Thelistisempty!
titlestrdb'
Welecome!
1:
Input'
2:
Show'
6:
ESC'
0d,0ah,'
inputstr1db'
Pleaseinputtheinformationgofthestudent!
inputstr2db'
Sorry,thelistisfull,youcannotinput!
inputstr3db'
Youinputawrangscorce!
backstrdb'
Key3tomainmenu!
exitstrdb'
goodbye!
dataends
codesegment;
代码段
assumecs:
code,ds:
data
inputprocnear;
输入函数
leasi,cnt;
查看计数器内容是否为满
moval,[si]
cmpal,10
jbinput1;
低于转
leadx,inputstr2;
满
movah,09h
int21h
jmpinput2
input1:
leadx,inputstr1;
未满
leadx,xuehaostr;
提示
xorax,ax
leasi,cnt
movcl,[si]
moval,9
mulcl;
算偏移地址
leasi,xuehao
addsi,ax
movcx,8
xuehao1:
movah,01h
cmpal,0dh;
enter键
jzxuehao2
mov[si],al
incsi
loopxuehao1
xuehao2:
moval,24h;
$字符,结束
leadx,enter
leadx,xinmingstr;
提示输入姓名
moval,20
mulcl
leasi,xinming
movcx,19
xinming1:
cmpal,0dh
jzxinming2
loopxinming1
xinming2:
moval,24h
leadx,deyustr;
提示输入德育分数
moval,3
leasi,deyu
movcx,2
deyu1:
jzdeyu2
loopdeyu1
deyu2:
xorax,ax;
寄存器清零
xorbx,bx
xorcx,cx
xordx,dx
movbl,[si]
subbl,48;
减去48
movbh,[si]
subbh,48
moval,10
mulbl;
ax=al*bl
movbl,al
addbl,bh;
十进制数
movbh,0
leasi,deyuscore
mov[si],bx
leadx,tiyustr;
leasi,tiyu
tiyu1:
jztiyu2
looptiyu1
tiyu2:
xorbx,bx
subbl,48
mulbl
addbl,bh
leasi,tiyuscore
leadx,lilunstr;
leasi,lilun
lilun1:
jzlilun2
looplilun1
lilun2:
leasi,lilunscore
leadx,shijianstr;
提示
leasi,shijian
shijian1:
jzshijian2
loopshijian1
shijian2:
leasi,shijianscore
计数器加1
incal
input2:
ret
inputendp
chuliprocnear;
处理函数。
然后转换成字符存放到zongce里。
查看计数器是否有记录。
cmpcl,0
jachuli1
leadx,disstr3;
如果没有记录,则输出列表为空的提示语。
jmpchuli2
chuli1:
leasi,deyuscore;
后面依次把各科转换后的整数加到bl,小数加到bh。
最后bl中的数即整数数之和,bh小数之和。
movax,[si]
movcl,10
divcl
movbh,ah
addbh,ah
addbl,al
movcl,2
movch,ah
movcl,al
mulch
addbh,al
moval,bh
addbl,al;
bl是整数的数字,bh是小数的数字
moval,bl
movbl,10
divbl
movbl,al;
bl是十位数,bh是个位数
计算要放入的地址偏移量ax
deccl
leasi,zongce
addbl,48
mov[si],bl
addbh,48
mov[si],bh
movbl,24h
mov[si],bl;
第三位放“$”
chuli2:
chuliendp;
处理函数结束
displayprocnear;
显示函数
movbl,0;
用于记录要显示的数据,若要显示第N项,bl为N-1,一会儿计算偏移量要用
xorch,ch
movcl,[si];
把cnt里的数个cx,当做显示循环次数
cmpcx,0
jadis1
jmpdis2
dis1:
;
有记录,输出各项
pushcx
输出学号
moval,9;
al,放该项的长度。
mulbl;
算出偏移量ax,例:
每个学号占9个字节,则第一个学号偏移量为0,第2个为9,以此类推。
movcx,ax
leadx,xuehaostr
leadx,xuehao
adddx,cx
leadx,xinmingstr
输出名字
leadx,xinming
leadx,deyustr
输出德育分数
moval,4
leadx,deyu
leadx,tiyustr
输出体育分数
leadx,tiyu
jmpdis4
dis3:
jmpdis1
dis4:
leadx,lilunstr
输出理论分数
moval,4
leadx,lilun
leadx,shijianstr
输出实践分数
leadx,shijian
leadx,zongcestr
输出综测分数
leadx,zongce
incbl
popcx
loopdis3;
由于离dis1太远,不能直接跳转到,所以先跳到dis3,再跳到dis1
dis2:
displayendp;
显示函数结束
start:
主函数开始
movax,data
movds,ax
menu:
MOVAL,0
MOVBH,7
movcl,0
movch,0
movdh,26
movdl,79
movah,6
int10h
MOVBH,0
MOVDH,0
MOVDL,0
MOVAH,2
INT10H
leadx,titlestr;
输出提示语,提示输入选项
movah,07h;
输入选项
cmpal,'
1'
输入为“1”,执行输入,并对输入数据处理
jzshuru
2'
输入为“2”,执行显示功能
jzshow
6'
jzout1
jmpmenu
shuru:
callinput;
调用输入函数
callchuli;
调用处理函数
jmpback
show:
calldisplay;
调用显示函数
back:
leadx,backstr;
输出提示语“Key3tomainmenu!
”
3'
判断选项是否为“3”
jzmenu;
是3,返回主菜单
jmpback;
不是3,跳到back
out1:
leadx,exitstr
movah,09h
int21h
movAH,4Ch
codeends
endstart