汇编实验报告_2

合集下载
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 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、调试:

相关文档
最新文档