汇编语言输入全班成绩排序
时间: 2023-07-01 21:08:26 浏览: 64
以下是一份使用汇编语言实现的全班成绩排序程序:
```
.model small
.stack 100h
.data
arr db 90h, 80h, 70h, 60h, 50h, 40h, 30h, 20h, 10h ; 学生成绩数组
n db 9 ; 学生数量
.code
main proc
mov ax, @data
mov ds, ax ; 初始化数据段寄存器
mov cl, n ; 循环次数
dec cl ; 循环次数减 1
mov si, offset arr ; 学生成绩数组首地址
outer_loop:
mov di, si ; 将当前元素的地址存入 di 寄存器
inc di ; 取下一个元素的地址
inner_loop:
cmp cl, 0 ; 检查循环次数是否为 0
je end_outer_loop ; 如果循环次数为 0,跳出外层循环
mov al, [si] ; 将当前元素存入 al 寄存器
mov bl, [di] ; 将下一个元素存入 bl 寄存器
cmp al, bl ; 比较 al 和 bl 的大小
jge skip_swap ; 如果 al 大于等于 bl,则跳过交换操作
; 交换当前元素和下一个元素的值
mov ah, [si]
mov [si], [di]
mov [di], ah
skip_swap:
inc di ; 取下一个元素的地址
loop inner_loop ; 继续内层循环
dec cl ; 循环次数减 1
mov si, offset arr ; 学生成绩数组首地址
loop outer_loop ; 继续外层循环
end_outer_loop:
mov ah, 4ch
int 21h ; 程序结束
main endp
end main
```
该程序使用冒泡排序算法对学生成绩数组进行排序,从而将所有学生按照成绩从高到低排列。具体而言,程序使用两层循环遍历数组中的每个元素,并通过比较相邻两个元素的大小来交换它们的值。这样,经过多次循环之后,数组中的元素就能够按照从大到小的顺序排列了。