汇编实验报告_2
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
《汇编语言程序设计》实验报告(二)
班级:软093班
学号:099074217
姓名:江涛
指导老师:陆勤
2011年11月
实验一
统计不同成绩段学生的人数
1、程序流程图:
设置10个学生成绩
是否等于
1000 是否不小
于90 是否不小
于80 是否不小
于60 是否不小
于70 Al 加1 Bh 加1 Bl 加1
Ch 加1
Cl 加1
Dh 加1
Dl 是否
为0
运行结束
2、源代码:
datas segment
array db 67,69,84,90,73,88,99,63,100,80
string1 db 'The number of 100:$'
string2 db 'The number of 90-99:$'
string3 db 'The number of 80-89:$'
string4 db 'The number of 70-79:$'
string5 db 'The number of 60-69:$'
string6 db 'the number of low 60:$'
datas ends
stacks segment
stacks ends
codes segment
assume cs:codes,ds:datas,ss:stacks
start:
mov ax,datas
mov ds,ax
mov al,0 ;用于计数
mov bx,0
mov cx,0
mov dh,0
mov dl,10 ;循环次数
call count
call output
mov ah,4ch
int 21h
count proc near ;子程序一,用来统计各分数段的人数mov si,0
next:
cmp array[si],100 ;将分数与100比较
jz L1
jl next1
next1:
cmp array[si],90 ;与90比较
jae L2
jl next2
next2:
cmp array[si],80 ;与80比较
jae L3
jl next3
next3:
cmp array[si],70 ;与70比较
jae L4
jl next4
next4:
cmp array[si],60 ;与60比较
jae L5
inc dh
inc si
dec dl ;循环次数减1
jnz next ;若dl尚未减少到零则回到next处执行jmp exit ;若为零就转到exit处执行,退出
L1:
inc al ;对分数为100的学生的人进行计数
inc si
dec dl
jnz next
jmp exit
L2:
inc bh ;对分数在90-99的学生的人进行计数inc si
dec dl
jnz next
jmp exit
L3:
inc bl ;对分数在80-89的学生的人进行计数
inc si
dec dl
jnz next
jmp exit
L4:
inc ch ;对分数在70-79的学生的人进行计数
inc si
dec dl
jnz next
jmp exit
L5:
inc cl ;对分数在60-69的学生的人进行计数inc si
dec dl
jnz next
exit:
ret
count endp
output proc near ;子程序二,用来输出相关内容mov ah,0
push dx
push cx
push bx
push ax
lea dx,string1 ;输出100分的人数
mov ah,9
int 21H
pop bx
mov dl,bl
add dl,30h
mov ah,2
int 21H
call enter
lea dx,string2 ;输出90至99分的人数
mov ah,9
int 21H
pop bx
mov dl,bh
add dl,30h
mov ah,2
int 21H
call enter
lea dx,string3 ;输出80至89分的人数
mov ah,9
int 21H
mov dl,bl
add dl,30h
mov ah,2
int 21H
call enter
lea dx,string4 ;输出70至79分的人数
mov ah,9
int 21H
pop bx
mov dl,bh
add dl,30h
mov ah,2
int 21H
call enter
lea dx,string5 ;输出60至69分的人数
mov ah,9
int 21H
mov dl,bl
add dl,30h
mov ah,2
int 21H
call enter
lea dx,string6 ;输出低于60分的人数
mov ah,9
int 21H
pop bx
mov dl,bh
add dl,30h
mov ah,2
int 21H
call enter
ret
output endp
enter proc near ;子程序三,用来在每行输出后回车换行mov dl,0ah
mov ah,02h
int 21h
mov dl,0dh
mov ah,02h
int 21h
ret
enter endp
codes ends
end start
3、调试: