一、题目要求

设有 10 个学生的成绩分别为 56、69、84、82、73、88、99、63、100 和 80 分。试编制程序分别统计低于 60 分、60~69 分、70~79 分、80~89 分、90~99 分及 100 分的人数存放到 s5、s6、s7、s8、s9 及 s10 单元,并分别输出这些单元的数据。

二、注意

要注意的地方在于输出完一类成绩后要进行换行操作,灵活利用子程序和循环即可

三、具体代码

;4.asm
	.model small
	.stack
	.data
	str_s5 db 'grade <60 is:','$'
	str_s6 db 'grade 60-69 is:','$'
	str_s7 db 'grade 70-79 is:','$'
	str_s8 db 'grade 80-89 is:','$'
	str_s9 db 'grade 90-99 is:','$'
	str_s10 db 'grade =100 is:','$'
	ENT db 0ah,'$';换行
	grade db 56,69,84,82,73,88,99,63,100,80;成绩
	s5 db 0
	s6 db 0
	s7 db 0
	s8 db 0
	s9 db 0
	s10 db 0
	.code
	.startup
	mov cx,10
	mov si,offset grade
	;循环开始
again:
   mov al,[si]
   cmp al,60;60比较
   jae ae60;如果大于等于60,跳转
   inc s5;否则,小于60,s5++
   jmp next
ae60:
   cmp al,70
   jae ae70
   inc s6
   jmp next
ae70:
   cmp al,80
   jae ae80
   inc s7
   jmp next
ae80:
   cmp al,90
   jae ae90
   inc s8
   jmp next
ae90:
   cmp al,100
   je e100
   inc s9
   jmp next
e100:
   inc s10
next:
   inc si
   loop again
   ;循环结束
   mov dx,offset str_s5
   mov ah,09h
   int 21h
   mov dl,s5;输出s5
   or dl,30h;30h或,将数值转换成ASCII码
   mov ah,02h
   int 21h
   mov dx,offset ent;换行
	mov ah,09h
	int 21h
	mov dx,offset str_s6
   mov ah,09h
   int 21h
   mov dl,s6
   or dl,30h
   mov ah,02h
   int 21h
   mov dx,offset ent;换行
	mov ah,09h
	int 21h
	mov dx,offset str_s7
   mov ah,09h
   int 21h
   mov dl,s7
   or dl,30h
   mov ah,02h
   int 21h
   mov dx,offset ent;换行
	mov ah,09h
	int 21h
	mov dx,offset str_s8
   mov ah,09h
   int 21h
   mov dl,s8
   or dl,30h
   mov ah,02h
   int 21h
   mov dx,offset ent;换行
	mov ah,09h
	int 21h
	mov dx,offset str_s9
   mov ah,09h
   int 21h
   mov dl,s9
   or dl,30h
   mov ah,02h
   int 21h
   mov dx,offset ent;换行
	mov ah,09h
	int 21h
	mov dx,offset str_s10
   mov ah,09h
   int 21h
   mov dl,s10
   or dl,30h
   mov ah,02h
   int 21h
	.exit
	end

Logo

DAMO开发者矩阵,由阿里巴巴达摩院和中国互联网协会联合发起,致力于探讨最前沿的技术趋势与应用成果,搭建高质量的交流与分享平台,推动技术创新与产业应用链接,围绕“人工智能与新型计算”构建开放共享的开发者生态。

更多推荐