CALL CHANG ;十六进制数变换成ASCII码 MOV AH,02 MOV DL,AL INT 21H POP AX
AND AL,0FH ;处理低位十六进制数 CALL CHANG ;同上解释 MOV AH,02 MOV DL,AL INT 21H POP DX POP CX POP AX RET
DISPAL ENDP
CHANG PROC NEAR ;数码转换 CMP AL,10 JNGE CHANG1 ADD AL,7 CHANG1: ADD AL,30H RET
CHANG ENDP DISPAX PROC NEAR XCHG AL,AH CALL DISPAL XCHG AH,AL CALL DISPAL RET
DISPAX ENDP DISPCR PROC NEAR PUSH AX PUSH DX MOV AH,2
MOV DL,0AH INT 21H MOV AH,2 MOV DL,0DH INT 21H POP DX POP AX RET
DISPCR ENDP
TRANS10TO16 PROC NEAR PUSH CX PUSH DX PUSH SI XOR AX,AX XOR CX,CX MOV CL,[SI] INC SI MOV AL,[SI] INC SI SUB AL,30H DEC CX JCXZ TRANSF2 MOV BX,10 TRANSF1: MUL BX JC TRANSF_ERR MOV DL,[SI] INC SI SUB DL,30H ADD AL,DL ADC AH,0 JC TRANSF_ERR LOOP TRANSF1
MOV BX,0 TRANSF2: JMP TRANSF_OK TRANSF_ERR: MOV BX,-1 TRANSF_OK: POP SI POP DX POP CX RET
TRANS10TO16 ENDP CODE ENDS END START
(3)成绩汇总
对输入的一些成绩进行分类汇总。 要求:
(a)所有数字由键盘输入;
(b)输入的成绩个数为任意个(小于100); (c)对成绩进行归类并输出显示在屏幕:
·显示最高成绩、最低成绩、平均成绩
·显示90-100分人数,80-89分人数,70-79分人数,60-69分人数,低于60分人数,
·显示无效数字个数(非数字或大于100数字个数) 答案:
DATA SEGMENT
STRING1 DB 'Please Input Score:','$' ;提示输入 STRMA DB 'THE MAX SCORE IS: ','$' STRMI DB 'THE MIN SCORE IS: ','$' STRAV DB 'THE AVERAGE SCORE IS:','$' STR1 DB 'THE NUM OF 0-59:','$'
STR2 DB 'THE NUM OF 60-69: ','$' STR3 DB 'THE NUM OF 70-79: ','$' STR4 DB 'THE NUM OF 80-89: ','$' STR5 DB 'THE NUM OF 90-100: ','$' STR6 DB 'THE WRONG NUM:','$' ;输出排序从大到小
SCORE DW 60 DUP(0) ;分配存放空间 DECIMAL DB 5 DUP(0) S5 DW 0 ;定义变量 S6 DW 0 S7 DW 0 S8 DW 0 S9 DW 0 S10 DW 0 DATA ENDS
STACK SEGMENT ;堆栈段 DW 64 DUP(0) TOP LABEL WORD STACK ENDS
CODE SEGMENT ;代码段 ASSUME CS:CODE,DS:DATA,SS:STACK START:
MOV AX,DATA MOV DS,AX MOV AX,STACK MOV SS,AX LEA SP,TOP
MOV DX,OFFSET STRING1 ;显示提示输入 MOV AH,09H INT 21H
XOR BX,BX ;寄存器清零
XOR CX,CX XOR SI,SI XOR DI,DI
INPUT: MOV AH,1 ;输入一个字符 INT 21H
CMP AL,0DH ;是否为回车键 JZ OVER ;是就跳到OVER CMP AL,39H
JG ERR_COUNT ;判断是否为0-9的数 CMP AL,20H ;是否为空格 JZ SAVE
SUB AL,30H ;变为真数 MOV CL,4
SHL BX,CL ;左移四位,变为BCD码 ADD BL,AL CMP BX,100H JG ERR_COUNT
JMP INPUT
ERR_COUNT: INC S10 MOV BX,0 JMP INPUT
SAVE:
MOV SCORE[SI],BX ;保存到SCORE中