计算比赛成绩(2)

2019-03-09 14:12

四、 源程序清单

DATA SEGMENT BUF DB 10 DUP(0)

STRING1 DB 'Please enter the score ' NUMBER DB 31H,': ','$'

STRING2 DB 0AH,'The ranged scores are:','$'

STRING3 DB 'After removing the highest and lowest score, the average score is: ','$'

ERROR DB 'ERROR',0AH,0DH,'$' DATA ENDS CODE SEGMENT

ASSUME CS:CODE,DS:DATA START: MOV AX,DATA MOV DS,AX XOR SI,SI;SI置0 MOV CX,9;9个数 INPUT:

LEA DX,STRING1 MOV AH,9 INT 21H

MOV AH,1

INT 21H;输入得分的十位到AL CMP AL,'0'

JB ER ;AL<0小于则跳到ER CMP AL,'1'

JA ER ;AL>1则跳到ER SUB AL,30H MOV DL,10

MUL DL;十位乘以10 MOV DX,AX;DX存十位数 MOV AH,1

INT 21H;输入得分的个位到AL CMP AL,'0'

JB ER ;AL<0小于则跳到ER CMP AL,'9'

JA ER ;AL>10则跳到ER SUB AL,30H

ADD AL,DL;个位十位相加到AL MOV BUF[SI],AL INC SI INC NUMBER MOV DL,0AH;换行

MOV AH,2 INT 21H

MOV DL,0DH;回车 INT 21H

LOOP INPUT;循环输入9次 JMP RANGE_0;转入排序 ER:

;输入错误后返回重新输入

LEA DX,ERROR

MOV AH,9 INT 21H JMP INPUT RANGE_0: MOV BX,1 MOV CX,9 XOR DI,DI RANGE: MOV AL,BUF[DI] CMP AL,BUF[DI+1] JAE NEXT_1 XCHG BUF[DI+1],AL MOV BUF[DI],AL MOV BX,0

NEXT_1: INC DI LOOP RANGE CMP BX,0 JE RANGE_0 ;冒泡法排列得分

LEA DX,STRING2 MOV AH,9 INT 21H MOV CX,9 XOR SI,SI;SI清零 MOV AH,2 RANGE_OUTPUT:

; 输出排序后的得分 MOV DL,BUF[SI] ADD DL,30H

CMP DL,39H;判断是否是10分 JA TENS_1 JBE TENS_0 TENS_1:

;十位数为1,则输出'10'

MOV BX,1 MOV DL,'1'

INT 21H MOV DL,'0' INT 21H

INC SI MOV DL,',' INT 21H JMP NEXT_2 TENS_0:

;十位数为0,则按原得分输出 INT 21H INC SI MOV DL,',' INT 21H NEXT_2:

LOOP RANGE_OUTPUT MOV AH,2 MOV DL,0AH;换行 INT 21H

MOV DL,0AH;换行 INT 21H

MOV DL,0DH;回车 INT 21H


计算比赛成绩(2).doc 将本文的Word文档下载到电脑 下载失败或者文档不完整,请联系客服人员解决!

下一篇:宝宝腹泻的注意事项每日一练(11月6日)

相关阅读
本类排行
× 注册会员免费下载(下载后可以自由复制和排版)

马上注册会员

注:下载文档有可能“只有目录或者内容不全”等情况,请下载之前注意辨别,如果您已付费且无法下载或内容有问题,请联系我们协助你处理。
微信: QQ: