汇编语言实验报告.docx

上传人:b****1 文档编号:3509865 上传时间:2023-05-06 格式:DOCX 页数:21 大小:172.16KB
下载 相关 举报
汇编语言实验报告.docx_第1页
第1页 / 共21页
汇编语言实验报告.docx_第2页
第2页 / 共21页
汇编语言实验报告.docx_第3页
第3页 / 共21页
汇编语言实验报告.docx_第4页
第4页 / 共21页
汇编语言实验报告.docx_第5页
第5页 / 共21页
汇编语言实验报告.docx_第6页
第6页 / 共21页
汇编语言实验报告.docx_第7页
第7页 / 共21页
汇编语言实验报告.docx_第8页
第8页 / 共21页
汇编语言实验报告.docx_第9页
第9页 / 共21页
汇编语言实验报告.docx_第10页
第10页 / 共21页
汇编语言实验报告.docx_第11页
第11页 / 共21页
汇编语言实验报告.docx_第12页
第12页 / 共21页
汇编语言实验报告.docx_第13页
第13页 / 共21页
汇编语言实验报告.docx_第14页
第14页 / 共21页
汇编语言实验报告.docx_第15页
第15页 / 共21页
汇编语言实验报告.docx_第16页
第16页 / 共21页
汇编语言实验报告.docx_第17页
第17页 / 共21页
汇编语言实验报告.docx_第18页
第18页 / 共21页
汇编语言实验报告.docx_第19页
第19页 / 共21页
汇编语言实验报告.docx_第20页
第20页 / 共21页
亲,该文档总共21页,到这儿已超出免费预览范围,如果喜欢就下载吧!
下载资源
资源描述

汇编语言实验报告.docx

《汇编语言实验报告.docx》由会员分享,可在线阅读,更多相关《汇编语言实验报告.docx(21页珍藏版)》请在冰点文库上搜索。

汇编语言实验报告.docx

汇编语言实验报告

华北科技学院综合性

实验报告

 

课程名称汇编语言

实验学期2013至2014学年第2学期

学生所在院部计算机学院计算机工程系

年级二年级专业班级计科B12-

学生姓名学号

任课教师李冬艳

实验成绩

 

计算机学院制

《汇编语言》课程综合性实验报告

开课实验室:

基础实验室四2018-09-07

实验题目

显示学生名次表

一、实验目的

进行汇编语言程序设计应用的综合性训练。

综合运用汇编语言循环程序、子程序、宏指令编程方法,提高汇编语言程序设计能力的应用水平。

二、设备与环境

PC兼容机、Windows操作系统、汇编程序masmforwindows2012

三、实验内容

编制一程序,要求接收从键盘输入的一个班的学生的学号、姓名、成绩,对学生的成绩进行排序,最后把学号、姓名、学生成绩、名次显示出来。

实验要求:

1.必须画流程图。

2.本程序涉及汇编语言的多重循环、子程序及宏,其中成绩输入、计算学生名次、显示学生名次都分别用子程序,也可用宏处理。

3.要求用菜单选择。

具体要求:

输入1是数据录入并输出(包括姓名、学号、成绩);

输入2是排序后的数据输出(包括姓名、学号、成绩、名次);

输入3是可以按学号查找某学生,并输出其成绩,选择修改或不改成绩。

四、实验结果及分析(包括①已完成什么功能,②如何实现的、遇到的问题和解决办法、流程图和关键代码解释,③收获和体会等)

 

1.流程图

 

 

 

 

2、程序分析

程序开始,显示主菜单,通过选择进入程序调用。

调用子程序INPUT,进入子程序:

输出字符串:

“input:

”调用子程序input,输入数据后调用子程序copy进行数据转存。

调用change把输入的数转换为二进制,保存到score2中。

程序排名:

用CX以栈的形式保存循环次数,把成绩送到AL中,和AL+1比较,小于交换,结束内循环,恢复外循环次数,结束外循环。

调用print输出排序。

最查找通过输入学号进行查找,如果找到进行修改。

最后输出。

3、关键代码

DATASENDS

aamacro

movah,2

movdl,10

int21h

movdl,13

int21h

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

popcx

looploop4

movah,9

leadx,mess7

int21h

exit4:

movcx,i

movax,0

leadi,buffnumber+2

repstosb

jmplet0

prog4:

MOVAH,4CH

INT21H

movah,9

leadx,mess0

int21h

START:

MOVAX,DATAS

MOVDS,AX

moves,ax

let0:

movah,9;显示菜单

leadx,menu

int21h

movah,1

int21h

cmpal,'1';输入选择

jzprog1

cmpal,'2'

jzprog2

cmpal,'3'

jzprog3

cmpal,'4'

jzprog4

movah,9

leadx,mess5

int21h

jmplet0

prog1:

callinput;调用input

jmplet0

prog2:

;调用排序、输出

movax,p

cmpax,1

jllet0

callsort

callprint

jmplet0

prog3:

;查找

movax,p

cmpax,1

jllet0

movah,9

leadx,mess6

int21h

movah,10

leadx,buffnumber

int21h

moval,buffnumber+1

addal,2

movah,0

movsi,ax

movbuffscore[si],0

aa

movah,9

leadx,mess3

int21h

leadx,buffname+2

int21h

leadx,buffnumber+2

int21h

leadx,buffscore+2

int21h

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

movax,0

leadi,buffname+2

repstosb

movcx,i+1

leasi,buffnumber+2

leadi,snum

adddi,signnum

cld

repmovsb

movcx,i

movax,0

leadi,buffnumber+2

repstosb

movcx,s+1

leasi,buffscore+2

leadi,score1

adddi,signscore

movah,10

leadx,buffname

int21h

moval,buffname+1

addal,2

movah,0

movsi,ax

movbuffname[si],0

let4:

movah,9

leadx,mess1

int21h

movcx,i

movax,0

leadi,buffnumber+2

repstosb

movah,10

leadx,buffnumber

int21h

moval,buffnumber+1

movah,0

movcx,ax

loop6:

movax,cx

incax

movsi,ax

cmpbuffnumber[si],30h

jblet4

cmpbuffnumber[si],39h

jalet4

looploop6

moval,buffnumber+1

addal,2

movah,0

movsi,ax

movbuffnumber[si],0

let5:

movah,9

leadx,mess2

int21h

movah,10

leadx,buffscore

int21h

moval,buffscore+1

movah,0

movcx,ax

moval,buffscore+1

addal,2

movah,0

moval,mingci[si]

xchgal,mingci[si+1]

movmingci[si],al

next:

addbx,s+1

incsi

looploop3

popcx

looploop2

exit2:

ret

sortendp

;print子程序,输出当前排序后的结果

printproc

movah,9

leadx,mess4

int21h

movcx,p

movbx,0

movax,0

movdi,0

movcont,'1'

rept3:

movah,9

leadx,cont

int21h

addcont[0],1

movax,0

moval,mingci[di]

decal

movbl,9

mulbl

leadx,sname

adddx,ax

movah,9

int21h

movax,0

moval,mingci[di]

decal

movbl,16

mulbl

leadx,snum

adddx,ax

movah,9

int21h

movax,0

movbx,0

moval,mingci[di]

decal

cld

repmovsb

leasi,buffscore+2

movdi,signscore

callchange

ret

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

incsi

looprept2

movax,x

movscore2[di],ax

movx,0

movcx,s

movax,0

leadi,buffscore+2

repstosb

exit1:

ret

changeendp

;sort子程序,对数据进行排序

sortproc

movcx,p

deccx

cmpcx,0

jzexit2

loop2:

pushcx

movbx,0

movsi,0

loop3:

movax,score2[bx]

cmpax,score2[bx+s+1]

jgenext

xchgax,score2[bx+s+1]

movscore2[bx],ax

leadx,mess2

int21h

movah,10

leadx,buffscore

int21h

moval,buffscore+1

addal,2

movah,0

movsi,ax

movbuffscore[si],0

movax,x

decal

movbl,5

mulbl

leadi,score1

adddi,ax

leasi,buffscore+2

movcx,s+1

repmovsb

movcx,p

movsi,0

loop6:

movax,x

cmpal,mingci[si]

jzlet5

incsi

looploop6

let5:

movax,si

movah,0

movbl,5

mulbl

movdi,ax

leasi,buffscore+2

callchange

exit5:

ret

print2endp

movbl,5

mulbl

leadx,score1

adddx,ax

movah,9

int21h

aa

incdi

looprept3

ret

printendp

;print2子程序,输出当前数据,并询问是否修改成绩

print2proc

aa

movah,9

leadx,mess3

int21h

movax,x

decal

movbl,9

mulbl

leadx,sname

adddx,ax

movah,9

int21h

movax,x

decal

movbl,16

mulbl

leadx,snum

adddx,ax

movah,9

int21h

movax,x

decal

movbl,5

mulbl

leadx,score1

adddx,ax

movah,9

int21h

leadx,mess8

int21h

movah,1

int21h

cmpal,'n'

jzexit5

movah,9

4、结果

 

 

 

5、实验心得及体会

通过这次的汇编程序,我从中学习到了很多知识。

虽然刚开始的时候遇到了很多难题,但是通过与老师、同学的交流之后,逐步克服了一个个的难题。

提高了自己编程的思维能力,在将来的学习,生活之中能够快速的解决问题。

汇编相对于别的编程语言而言,难度是比较大。

汇编是直接对CUP进行操作,能够直接控制计算机编程。

由于汇编不像C++那样的高级编程语言面向对象,在编程的时候思维有点乱,容易出错,而且小的错误也不容易找到,特别是程序代码长的时候。

子程序INPUT的程序中主要有三个部分:

学号输入,姓名输入,成绩输入,它们都设有缓区,分别为BUFF1,BUFF2,BUFF3。

输入方式是调用了10号功能,输入一个字符串,长度也已经在之前设计好了,学号,姓名,成绩都是相同的输入方式。

学号,姓名,成绩输入完成后,子程序INPUT再调用COPY将缓存区转存到学号,姓名,成绩存储单元之中。

子程序COPY的设计业分为三个部分:

学号转存,姓名转存,成绩转存。

子程序PRINT,将学生的学号,姓名,成绩,按照成绩降序输出。

最后查找及修改。

这次实验真是让我受益匪浅啊,它涵盖了本学期的大部分知识点。

对熟练掌握汇编语言是极其重要的。

 

教师评价

评定项目

A

B

C

D

评定项目

A

B

C

D

算法正确

操作熟练

程序结构合理

实验结果正确

功能完善

文字流畅、报告规范

其他:

 

评价教师签名:

2014年6月20日

展开阅读全文
相关资源
猜你喜欢
相关搜索
资源标签

当前位置:首页 > 初中教育 > 其它课程

copyright@ 2008-2023 冰点文库 网站版权所有

经营许可证编号:鄂ICP备19020893号-2