RET CR ENDP START:
MOV AX,DATAS MOV DS,AX XOR SI,SI MOV CX,9 MOV AH, 00H
MOV AL, 10 ;选择显示方式10H(16色图形) INT 10H
MOV AH, 10H MOV AL, 00H
MOV BH, 10H ;背景设为绿色(02H也可以,是用DEBUG调试出来的)
MOV BL, 0 ;选择0号调色板 INT 10H INPUT:
LEA DX,STRING1
MOV AH,9 ;9号功能,显示字符串 INT 21H ;的逻辑地址 MOV AH,1 ;AL=输入字符 INT 21H
SUB AL,30H ;把输入的字符ASCII转换成数值 MOV DL,10
MUL DL ;十位数乘以10
MOV DX,AX ;把十位数存放在DL MOV AH,1 INT 21H MOV BL,'.'
CMP AL,BL ;判断个位数是否是小数点,因为要输入的数是
【最新整理,下载后即可编辑】
整数,用这种方法来提示输入的数不能是小数 JE ER1
SUB AL,30H
ADD AL,DL ;个位数和十位数相加 CMP AL,0 ;跟0比较 JB ER ;小于0则调到ER CMP AL,10 ;跟10比较 JA ER ;大于10则调到ER
MOV RESULT[SI],AL ;把AL的值存放在RESULT INC SI ;SI自加1 INC NUMBER
CALL CR ;调用子程序 LOOP INPUT
JMP RANGE_0 ;转入排序 ER:
LEA DX,ERROR ;取ERROR的偏移地址 MOV AH,9 INT 21H JMP INPUT ER1:
LEA DX,ERROR1 MOV AH,9 INT 21H JMP INPUT RANGE_0: MOV BX,1 MOV CX,9 XOR DI,DI RANGE:
【最新整理,下载后即可编辑】
MOV AL,RESULT[DI] ;把RESULT(I)送到AL CMP AL,RESULT[DI+1] ;进行比较
JAE NEXT_1 ;大于或等于跳到NEXT_1 XCHG RESULT[DI+1],AL ;小于则进行交换 MOV RESULT[DI],AL ;保存较大的数 MOV BX,0 NEXT_1: INC DI
LOOP RANGE CMP BX,0 JE RANGE_0
LEA DX,STRING2 ;取STRING2的偏移地址 MOV AH,9 INT 21H
MOV CX,9 ;显示输出的次数 XOR SI,SI;SI ;清零 MOV AH,2
RANGE_OUTPUT: ;输出排序后的得分 MOV DL,RESULT[SI]
ADD DL,30H ;把DL的值转换成ASCII CMP DL,39H ;判断是否是10分 JA TENS_1 ;10分就跳到TEXT_1 JBE TENS_0 ;不是就跳到TEXT_0 TENS_1:
MOV BX,1
MOV DL,'1' ;输出字符1 INT 21H
MOV DL,'0' ;输出字符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
LEA DX,STRING3 ;取STRING3的偏移地址 MOV AH,9H INT 21H
MOV CX,7 ;累加中间7个数字 XOR AX,AX ;AX清零 DEC SI SUM:
;求7个分数的和 DEC SI
ADD AL,RESULT[SI] LOOP SUM
CMP AL,46H ;与满分70 比较
JAE FULL_MARK ;大于等于挑到FULL_MARK JMP N_FULL_MARK ;否则跳到N_FULL_MARK FULL_MARK:
【最新整理,下载后即可编辑】
;满分时 MOV AH,2H MOV DL,'1' INT 21H
MOV DL,'0' INT 21H MOV DL,'.'
INT 21H MOV DL,'0' INT 21H MOV DL,'0' INT 21H
JMP ENDING N_FULL_MARK: ;非满分时
MOV CX,3 准备
MOV BH,1 DIVISION:
MOV BL,7 DIV BL PUSH AX ADD AL,30H MOV DL,AL MOV AH,2 INT 21H CMP BH,0 数点
JE DOT
MOV DL,'.'
【最新整理,下载后即可编辑】
;输出字符1 ;输出字符0
;输出字符
;设置循环3次,为下面的求两位小数做;设置小数点出现一次
;除以7
;把除完后的AX入栈,存起来
;输出商
;把BX置为0,使下次循环不会出现小
汇编语言课程设计报告(完整资料).doc
![](/skin/haowen/images/icon_star.png)
![](/skin/haowen/images/icon_star.png)
![](/skin/haowen/images/icon_star.png)
![](/skin/haowen/images/icon_star.png)