求一道汇编语言程序设计题的答案

假设学生某门课的成绩存放在数据区中,请编一程序。统计该成绩中小于60分的人数,60~90分的人数,大于90分的人数,并显示在屏幕上。

;-------------------------------------
DATA1 SEGMENT

NUM DB 100, 79, 20, 78, 89, 95, 76, 40, 88 ;最多99个成绩
DB 80, 98, 40, 0, 100, 83, 92, 49
NN EQU $ - NUM

MSG1 DB ' 0 ~ 59 : $'
MSG2 DB '60 ~ 89 : $'
MSG3 DB '90 ~100 : $'
CRLF DB 13, 10, '$'

N1 DB 0
N2 DB 0
N3 DB 0

DATA1 ENDS
;-------------------------------------
CODE SEGMENT PARA PUBLIC

ASSUME CS:CODE, DS:DATA1

START:
MOV AX, DATA1
MOV DS, AX

LEA SI, NUM
MOV CX, NN
LP:
MOV AL, [SI]
CMP AL, 60
JB N1_JY
CMP AL, 90
JB N2_JY
INC N3
JMP NEXT
N1_JY:
INC N1
JMP NEXT
N2_JY:
INC N2
NEXT:
INC SI
LOOP LP

LEA DX, MSG1
MOV AH, 9
INT 21H
MOV AL, N1
CALL HEX_ASC

LEA DX, MSG2
MOV AH, 9
INT 21H
MOV AL, N2
CALL HEX_ASC

LEA DX, MSG3
MOV AH, 9
INT 21H
MOV AL, N3
CALL HEX_ASC
EXIT:
MOV AH, 4CH
INT 21H
;====================================
HEX_ASC PROC NEAR

MOV AH, 0
MOV BL, 100
DIV BL
MOV DL, AL
ADD DL, '0'
CALL OUT_DL

MOV AL, AH
MOV AH, 0
MOV BL, 10
DIV BL
MOV DL, AL
ADD DL, '0'
CALL OUT_DL

MOV DL, AH
ADD DL, '0'
CALL OUT_DL

LEA DX, CRLF
MOV AH, 9
INT 21H

RET
HEX_ASC ENDP
;====================================
OUT_DL PROC
PUSH AX
MOV AH, 2
INT 21H
POP AX
RET
OUT_DL ENDP
;====================================
CODE ENDS
;-------------------------------------
END START
温馨提示:答案为网友推荐,仅供参考
相似回答