汇编语言实验报告文档格式.docx
- 文档编号:6057216
- 上传时间:2023-05-06
- 格式:DOCX
- 页数:21
- 大小:172.16KB
汇编语言实验报告文档格式.docx
《汇编语言实验报告文档格式.docx》由会员分享,可在线阅读,更多相关《汇编语言实验报告文档格式.docx(21页珍藏版)》请在冰点文库上搜索。
输入3是可以按学号查找某学生,并输出其成绩,选择修改或不改成绩。
四、实验结果及分析(包括①已完成什么功能,②如何实现的、遇到的问题和解决办法、流程图和关键代码解释,③收获和体会等)
1.流程图
2、程序分析
程序开始,显示主菜单,通过选择进入程序调用。
调用子程序INPUT,进入子程序:
输出字符串:
“input:
”调用子程序input,输入数据后调用子程序copy进行数据转存。
调用change把输入的数转换为二进制,保存到score2中。
程序排名:
用CX以栈的形式保存循环次数,把成绩送到AL中,和AL+1比较,小于交换,结束内循环,恢复外循环次数,结束外循环。
调用print输出排序。
最查找通过输入学号进行查找,如果找到进行修改。
最后输出。
3、关键代码
DATASENDS
aamacro
movah,2
movdl,10
int21h
movdl,13
endm
STACKSSEGMENT
;
此处输入堆栈段代码
STACKSENDS
CODESSEGMENT
ASSUMECS:
CODES,DS:
DATAS,SS:
STACKS
movsi,ax
movbuffnumber[si],0
movcx,p
movdi,0
loop4:
pushcx
movcx,i
inccx
movsi,2
loop5:
movbl,snum[di]
cmpbl,buffnumber[si]
jnzlet3
incdi
incsi
looploop5
popcx
movdx,p
incdx
subdx,cx
movx,dx
callprint2
jmpexit4
let3:
movbx,18
subbx,si
movdx,di
adddx,bx
movdi,dx
looploop4
movah,9
leadx,mess7
exit4:
movcx,i
movax,0
leadi,buffnumber+2
repstosb
jmplet0
prog4:
MOVAH,4CH
INT21H
leadx,mess0
START:
MOVAX,DATAS
MOVDS,AX
moves,ax
let0:
movah,9;
显示菜单
leadx,menu
movah,1
cmpal,'
1'
输入选择
jzprog1
2'
jzprog2
3'
jzprog3
4'
jzprog4
leadx,mess5
prog1:
callinput;
调用input
prog2:
调用排序、输出
movax,p
cmpax,1
jllet0
callsort
callprint
prog3:
查找
leadx,mess6
movah,10
leadx,buffnumber
moval,buffnumber+1
addal,2
movah,0
movbuffscore[si],0
aa
leadx,mess3
leadx,buffname+2
leadx,buffnumber+2
leadx,buffscore+2
movmingci[bx-1],bl
cmpbx,1
jzlet1
addsignname,n+1
addsignnum,i+1
addsignscore,s+1
let1:
callcopy
ret
inputendp
copy子程序
copyproc
movcx,n+1
leasi,buffname+2
leadi,sname
adddi,signname
cld
repmovsb
movcx,n
leadi,buffname+2
movcx,i+1
leasi,buffnumber+2
leadi,snum
adddi,signnum
movcx,s+1
leasi,buffscore+2
leadi,score1
adddi,signscore
leadx,buffname
moval,buffname+1
movbuffname[si],0
let4:
leadx,mess1
movcx,ax
loop6:
movax,cx
incax
cmpbuffnumber[si],30h
jblet4
cmpbuffnumber[si],39h
jalet4
looploop6
let5:
leadx,mess2
leadx,buffscore
moval,buffscore+1
moval,mingci[si]
xchgal,mingci[si+1]
movmingci[si],al
next:
addbx,s+1
looploop3
looploop2
exit2:
sortendp
print子程序,输出当前排序后的结果
printproc
leadx,mess4
movbx,0
movcont,'
rept3:
movah,9
leadx,cont
addcont[0],1
moval,mingci[di]
decal
movbl,9
mulbl
leadx,sname
adddx,ax
movbl,16
leadx,snum
movdi,signscore
callchange
copyendp
change子程序十进制ASCII码->
二进制
changeproc
movx,0
movcx,[si-1]
andcx,0fh
rept2:
moval,[si]
cmpal,30h
jlexit1
cmpal,39h
jgexit1
andax,0fh
xchgax,x
movdx,10
muldx
addx,ax
looprept2
movax,x
movscore2[di],ax
movcx,s
leadi,buffscore+2
exit1:
ret
changeendp
sort子程序,对数据进行排序
sortproc
deccx
cmpcx,0
jzexit2
loop2:
movsi,0
loop3:
movax,score2[bx]
cmpax,score2[bx+s+1]
jgenext
xchgax,score2[bx+s+1]
movscore2[bx],ax
movbl,5
adddi,ax
cmpal,mingci[si]
jzlet5
looploop6
movax,si
movdi,ax
callchange
exit5:
print2endp
leadx,score1
looprept3
printendp
;
print2子程序,输出当前数据,并询问是否修改成绩
print2proc
leadx,mess8
n'
jzexit5
movah,9
4、结果
5、实验心得及体会
通过这次的汇编程序,我从中学习到了很多知识。
虽然刚开始的时候遇到了很多难题,但是通过与老师、同学的交流之后,逐步克服了一个个的难题。
提高了自己编程的思维能力,在将来的学习,生活之中能够快速的解决问题。
汇编相对于别的编程语言而言,难度是比较大。
汇编是直接对CUP进行操作,能够直接控制计算机编程。
由于汇编不像C++那样的高级编程语言面向对象,在编程的时候思维有点乱,容易出错,而且小的错误也不容易找到,特别是程序代码长的时候。
子程序INPUT的程序中主要有三个部分:
学号输入,姓名输入,成绩输入,它们都设有缓区,分别为BUFF1,BUFF2,BUFF3。
输入方式是调用了10号功能,输入一个字符串,长度也已经在之前设计好了,学号,姓名,成绩都是相同的输入方式。
学号,姓名,成绩输入完成后,子程序INPUT再调用COPY将缓存区转存到学号,姓名,成绩存储单元之中。
子程序COPY的设计业分为三个部分:
学号转存,姓名转存,成绩转存。
子程序PRINT,将学生的学号,姓名,成绩,按照成绩降序输出。
最后查找及修改。
这次实验真是让我受益匪浅啊,它涵盖了本学期的大部分知识点。
对熟练掌握汇编语言是极其重要的。
教师评价
评定项目
A
B
C
D
算法正确
操作熟练
程序结构合理
实验结果正确
功能完善
文字流畅、报告规范
其他:
评价教师签名:
2014年6月20日
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 汇编语言 实验 报告