8086汇编 统计成绩

在当前数据段(DS),偏移地址为DATAB开始的顺序80个单元中,存放着BDI某班30个同学 某门考试成绩。按如下要求编写程序: (1) 编写程序统计≥90 分、80~89 分、70~79 分、60~69 分、<60 分的人数各为多
少,并将结果放在同一数据段、偏移地址为BTRX 开始的顺序单元中。 (2)
试编程序,求该班这门课的平均成绩为多少,并放在该数据段的AVER单元中。 (3) 尝试上机调试运行及验证上述程序。输出并保存结果

DATA SEGMENT
TABLE DB 88,79,72,86,76,83,81,69,94,87,78,61,87,71,70,78,76,75,69,93,62,97,88,80,86,51,73,79,85,78
GRADEA DB 0
GRADEB DB 0 
GRADEC DB 0
GRADED DB 0
GRADEE DB 0
AVER 	DB 0FFH
DATA ENDS
CODE SEGMENT 
	 ASSUME CS: CODE, DS: DATA, ES:DATA
START:  MOV AX, DATA		
		MOV DS, AX
		MOV ES, AX
		LEA SI, TABLE
		MOV DX,0
		MOV CX, 30			;30个成绩,循环30次

AGAIN: MOV   AL,[SI]
	   CMP   AL,59		
	   JA     GD			;>=则跳转到下一个成绩等级
GE: 	INC   GRADEE		;不跳转则该成绩等级人数加一
 		JMP   NEXT
GD:     CMP   AL,69
		JA    GC
		INC   GRADED
		JMP   NEXT
GC: 	CMP   AL, 79
	 	JA 	  GB
		INC   GRADEC
		JMP   NEXT
GB:	    CMP   AL,89
		JA	  GA
		INC   GRADEB
		JMP   NEXT
GA: 	INC	  GRADEA
NEXT:   ADD SI,1		;每次SI加一,到下一个成绩的地址
		ADD DL,AL		;把所有成绩相加
		ADC DH,0		;进位
		LOOP AGAIN		;循环重复,直到CX=0
		MOV AX,DX		;除法默认把AX里的数当除数
		MOV BL,30		;除去30得到平均成绩
		DIV	BL  		;无符号除法
		MOV AVER,AL 	;把商赋值给平均数
EXIT:   MOV AX,4C00H		
		INT 	21H
CODE ENDS
END START

8086汇编 统计成绩_第1张图片

你可能感兴趣的:(8086汇编 统计成绩)