华北科技学院综合性
实 验 报 告
课程名称 汇 编 语 言
实验学期 20## 至 20## 学年 第 1 学期
学生所在系部
年级 专业班级
学生姓名 学号
任课教师
实验成绩
计算机学院制
《 汇 编 语 言》课程综合性实验报告
开课实验室:基础一 20##-12-08
一、实验目的
进行汇编语言程序设计应用的综合性训练。综合运用汇编语言循环程序、子程序、宏指令编程方法,提高汇编语言程序设计能力的应用水平。
二、设备与环境
PC兼容机、Windows操作系统、汇编程序masm for windows 2012
三、实验内容
编制一程序,要求接收从键盘输入的一个班的学生的学号、姓名、成绩,对学生的成绩进行排序,最后把学号、姓名、学生成绩、名次显示出来。
实验要求:
1.必须画流程图。
2.本程序涉及汇编语言的多重循环、子程序及宏,其中 成绩输入、计算学生名次、显示学生名次都分别用子程序,也可用宏处理。
3.要求用菜单选择。具体要求:
输入1是数据录入并输出(包括姓名、学号、成绩);
输入2是排序后的数据输出(包括姓名、学号、成绩、名次);
输入3是可以按学号查找某学生,并输出其成绩,选择修改或不改成绩。
实验结果及分析
(1)学生学号,姓名和成绩的输入和输出。
(2)学生成绩的排序
(3)学生成绩的查询及修改
(1)菜单提示
ary db 10,13,' @@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@'
db 10,13,' @ 1.input student number,name,score @'
db 10,13,' @ 2.output data @'
db 10,13,' @ 3.pick out student @'
db 10,13,' @@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@'
DB 10,13,'please choose what you want to do?1/2/3','$'
(2)宏定义:
hc macro ;回车换行宏定义
mov ah,2
mov dl,13
int 21h
mov ah,2
mov dl,10
int 21h
endm
kongge macro n ;空格宏定义
local
mov cx,n
lp8:
mov dl,20h
mov ah,2
int 21h
loop lp8
endm
(3)菜单调用
mov ah,1 ;-------------------------输入字符比较
int 21h
cmp al,'1'
jz lp1
cmp al,'2'
jz lp2
cmp al,'3'
jz lp3
mov ah,9
mov dx,offset error ;-----------------错误输出,并返回
int 21h
jmp main
(4)输入子程序
input proc
mov bx,p
inc bx
mov p,bx
mov ah,9
lea dx,string1 ;----------------输入姓名并存入buffer1中
int 21h
mov ah,10
lea dx,buffer1
int 21h
mov al,buffer1+1
add al,2
mov ah,0
mov si,ax
mov buffer1[si],0
let4:
mov ah,9 ;--------------输入学号存入buffer2中
lea dx,string2
int 21h
mov cx,m
mov ax,0
lea di,buffer2+2
rep stosb
mov ah,10
lea dx,buffer2
int 21h
mov al,buffer2+1
mov ah,0
mov cx,ax
loop1:
mov ax,cx
inc ax
mov si,ax
cmp buffer2[si],30h ;判断输入的数字是否为0~9
jb let4
cmp buffer2[si],39h
ja let4
loop loop1
mov al,buffer2+1
add al,2
mov ah,0
mov si,ax
mov buffer2[si],0
let5:
mov dx,offset string3 ;-----------输入成绩存入buffer2中
mov ah,9
int 21h
mov ah,10
lea dx,buffer3
int 21h
mov al,buffer3+1
mov ah,0
mov cx,ax
mov al,buffer3+1
add al,2
mov ah,0
mov si,ax
mov buffer3[si],0
hc
mov dx,offset strput1 ;----------将存入的串输出来
mov ah,9
int 21h
lea dx,buffer1+2
int 21h
lea dx,buffer2+2
int 21h
lea dx,buffer3+2
int 21h
mov mingci[bx-1],bl
cmp bx,1
jz let1
add sign1,n+1 ;--------执行加法指令,计入次数
add sign2,m+1
add sign3,l+1
let1:
call subr1
ret
input endp
(5)排序子程序
paixu proc
mov cx,p
dec cx
cmp cx,0
jz exit2
loop3:
push cx
mov bx,0
mov si,0
loop2:
mov ax,score2[bx]
cmp ax,score2[bx+l+1]
jge next
xchg ax,score2[bx+l+1] ;交换成绩
mov score2[bx],ax
mov al,mingci[si]
xchg al,mingci[si+1] ;交换名次
mov mingci[si],al
next:
add bx,l+1
inc si
loop loop2
pop cx
loop loop3
exit2:
ret
paixu endp
菜单流程图:
此次程序设计,为学生成绩管理,考虑到难度问题,学生信息为学号,姓名,成绩,只对一门成绩进行管理,包括成绩录入,查询成绩,修改成绩,排序。
程序主要运用的是子程序的设计与调用以及宏,在调用相应的子程序时,我们运用的是跳转,通过比较的方式,得到相应的结果进行跳转,然后调用子程序。在程序的设计中,设计了菜单,使得程序的界面美观友好,达到使用者操作的时候,感觉简单、清晰。在设计子程序的时候,因为我们是分开进行编程的,所以每一个子程序都是独立的模块。在对子程序的编写时,有的子程序也设计了小菜单,方便用户操作,界面美观。
对于每个子程序的设计遇到了很多的麻烦,例如由于程序设计了大量宏, 当调用宏时,dx连带改变,而这点很容易忽略,最后导致程序运行错误,花了好多时间去解决。另外编号的重复也导致很多错误,以后要注意标号的定义方法,避免重复。
这次的大作业,虽然程序不大,功能也不是很全面,一行一行的敲代码,然后调试,看着调试中每个寄存器值的的变化,突然觉得汇编语言不在那么抽象,可以说通过此次实验我的编程能力都得到了提升。
一实验内容1DEBUG的启动及其基本命令的使用2内存操作数与寻址方式1利用DEBUG程序中的E命令将两个多字节数12345678H…
学生实验报告册20xx20xx学年第1学期实验名称汇编语言程序设计学院信息与电气工程学院班级09级计算机科学与技术2班学号1351…
实验一汇编语言的源程序的输入一实验目的1通过实验了解和熟悉微机系统的配置2学习在DEBUG状态下输入汇编源程序的方法3初步掌握调试…
福建农林大学金山学院课程名称姓名系专业年级学号指导教师职称程序设计类课程实验报告汇编语言庄建军信息与机电工程电子信息工程专业20x…
汇编语言程序设计第一次上机作业1.从键盘上接受一个字符,找出他的前导字符和后继字符,按顺序显示这三个字符。寄存器分配:AL:存输入…
汇编语言程序设计实验报告学号:****班级:电气信息类1005姓名:陆**指导老师:***实验一、汇编语言上机的基本过程及环境【实…
实验一1熟悉汇编语言程序调试环境及顺序程序设计一实验目的及要求1学习及掌握汇编语言源程序的书写格式和要求明确程序中各段的功能和相互…
福建农林大学计算机与信息学院本科实验报告规范一二每个实验项目一份实验报告实验报告内容一般包括以下几个内容1实验项目名称2实验目的和…
课程编号B080103020汇编语言程序设计实验报告东北大学软件学院实验1数据传送指令实验目的了解和掌握MOVPUSHPOPXCH…
汇编实验报告1实验名称循环与子程序程序设计2实验目的1加深对循环结构的理解2掌握循环程序的设计方法3学习子程序的定义和调用方法4掌…