汇编语言实现10学生成绩排名
时间: 2024-05-08 12:16:39 浏览: 17
假设有10个学生的成绩存在一个数组中,可以使用冒泡排序来实现排名,具体步骤如下:
1. 将数组中第一个数和第二个数比较,如果第一个数比第二个数大,则交换它们的位置。
2. 接着将第二个数和第三个数比较,如果第二个数比第三个数大,则交换它们的位置。
3. 重复以上步骤,直到将整个数组排好序。
下面是汇编语言的实现代码:
```
.MODEL SMALL
.STACK 100H
.DATA
scores DB 80, 90, 70, 85, 95, 75, 65, 60, 88, 92
n DB 10
.CODE
MAIN PROC
MOV AX, @DATA
MOV DS, AX
MOV CX, n
DEC CX ; cx = 9
MOV BX, 0
outerloop:
MOV SI, 0
innerloop:
MOV DL, scores[SI]
CMP DL, scores[SI+1]
JGE skip
XCHG DL, scores[SI+1]
MOV scores[SI], DL
MOV BX, SI
skip:
INC SI
CMP SI, CX
JBE innerloop
DEC CX
CMP CX, 0
JNZ outerloop
; 输出排名
MOV AH, 09H
LEA DX, msg1
INT 21H
MOV AH, 02H
MOV CX, n
MOV SI, 0
printloop:
MOV DL, scores[SI]
ADD DL, 30H ; 将数字转换成字符
INT 21H
MOV DL, ' '
INT 21H
INC SI
LOOP printloop
MOV AH, 4CH
INT 21H
MAIN ENDP
.DATA
msg1 DB '排名:$'
.END MAIN
```
以上代码使用了冒泡排序算法来实现对数组的排序,而后使用了 int 21h 的 09h 功能来输出提示信息,然后使用 int 21h 的 02h 功能来输出排名。最后使用 int 21h 的 4Ch 功能来结束程序的执行。