汇编学习1

本文介绍了如何使用汇编语言编程统计15名学生成绩,分别计算不及格、60~90分及90分以上的人数。代码实现中存在健壮性问题,未考虑分数有效性判断。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

题目要求:

假设15名学生某门课成绩如下:

90,67,88,77,55,89,68,98,95,72,57,67,92,88,78 

请编程实现,统计该成绩中小于60分的人数,60~90分的人数,大于90分的人数,分别存储于变量X1,X2,X3中。

     

题目分析:

循环15次,每次循环取出一个学生的成绩,然后根据此成绩,按照相应的条件去操作即可。

代码实现:

data segment
	array db 90,67,88,77,55,89,68,98,95,72,57,67,92,88,78     ;数据准备
	X1 db ?		;X1变量用于保存分数在60以下的人			
	X2 db ?		;X2变量用于保存分数60~90之间的人
	X3 db ?		;X3变量用于保存分数在90以上的人
data ends

code segment
assume cs:code,ds:data
start:
	 mov ax,data
	 mov ds,ax
	 mov cx,15
	 mov si,offset array
  C1:
     mov al,[si]
	 cmp  al,60
	 jb INCX1
	 cmp al,90
	 ja INCX3
	 jmp INCX2
INCX1:
     mov ah,X1
	 add ah,1
	 mov X1,ah
	 jmp ENDLOOP
INCX2:
     mov ah,X2
	 add ah,1
	 mov X2,ah
	 jmp ENDLOOP
INCX3:
     mov ah,X3
	 add ah,1
	 mov X3,ah
	 jmp ENDLOOP
ENDLOOP:
	 inc si
	 loop C1
	 mov ax,4c00h
	 int 21h
code ends
	end start

代码不足:

此程序在分数类别的判断上首先判断是否低于60,如果是就跳转至INCX1操作,否则继续判断是否高于90,如果是跳转至INCX3,否则就默认当成分数是60~90之间的分数。那么此时就有一个问题,如果准备的数据本身就不符合要求呢?例如超过100,或低于0等,可见还未对其分数有效性进行判断。可见代码健壮性有待提高。不过从题意上来讲,这样写其实也是基本实现了功能了的。


评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值