汇编语言使用子程序做成绩排序
时间: 2024-01-22 09:19:31 浏览: 28
以下是一个使用汇编语言子程序进行成绩排序的示例代码:
```
.MODEL SMALL
.STACK 100H
.DATA
GRADES DB 60, 70, 80, 90, 50, 95, 85, 75, 65, 55
COUNT DB 10
MSG1 DB 'Original grades: $'
MSG2 DB 'Sorted grades: $'
.CODE
MAIN PROC
MOV AX, @DATA
MOV DS, AX
LEA DX, MSG1
MOV AH, 9
INT 21H ; 输出原始成绩列表
MOV SI, 0
MOV BX, 0
MOV CL, COUNT
DEC CL ; 循环次数为 COUNT - 1
OuterLoop:
MOV AL, CL
MOV BH, 0
MOV DL, 0
InnerLoop:
MOV AH, 0
MOV AL, SI
ADD AL, 1
CMP AL, COUNT
JE Next
MOV DL, AL
XOR AH, AH
MOV BL, BYTE PTR GRADES[SI]
MOV BH, BYTE PTR GRADES[AL]
CMP BL, BH
JNL NotSwap
MOV BYTE PTR GRADES[SI], BH
MOV BYTE PTR GRADES[AL], BL
NotSwap:
INC SI
JMP InnerLoop
Next:
DEC CL
MOV SI, 0
CMP CL, 0
JNE OuterLoop
LEA DX, MSG2
MOV AH, 9
INT 21H ; 输出排序后的成绩列表
MOV AH, 4CH
INT 21H
MAIN ENDP
END MAIN
```
这个程序使用了两个循环来对成绩列表进行排序。外循环的循环次数为 COUNT - 1,内循环则是对相邻的两个成绩进行比较并进行交换,直到列表末尾。最终,排序后的成绩列表将被输出到屏幕上。