汇编,根据成绩数组cj中保存的10个学生的成绩,统计相应学生的名次并填入名次数组mc中
时间: 2024-02-25 11:56:16 浏览: 62
好的,以下是针对你的问题的回答:
你可以使用以下的汇编程序实现:
```assembly
.model small
.stack 100h
.data
cj db 80, 90, 70, 85, 95, 75, 60, 92, 88, 76 ; 保存学生的成绩
mc db 10 dup(0) ; 保存学生的名次
.code
mov ax, @data
mov ds, ax
; 统计名次
mov si, offset cj
mov di, offset mc
mov cx, 10
mov bx, 1
loop1:
mov al, [si]
mov ah, [si+1]
mov dx, cx
inner:
cmp al, [si]
jl next
cmp ah, [si+1]
jg swap
cmp ah, [si+1]
jne next
cmp dx, cx
jle next
swap:
mov bx, dx
mov dl, [si]
mov dh, [si+1]
mov [si], al
mov [si+1], ah
mov al, dl
mov ah, dh
next:
add si, 2
dec dx
jnz inner
mov [di], bx
add di, 1
dec cx
jnz loop1
; 输出名次
mov di, offset mc
mov cx, 10
mov bx, 1
loop2:
mov al, [di]
mov ah, 0
add al, 48
mov dl, bl
add dl, 48
mov ah, 2
int 21h
mov ah, 2
mov dl, ' '
int 21h
inc di
inc bx
dec cx
jnz loop2
mov ah, 4ch
int 21h
```
这段代码中,我们先定义了一个保存学生成绩的数组`cj`和一个保存学生名次的数组`mc`,然后使用两个循环来统计每个学生的名次。外层循环遍历每个学生,内层循环遍历所有学生的成绩,比较大小并交换位置。最后,我们再用一个循环输出每个学生的名次。
希望这个答案能够帮到你!如果你还有其他问题,可以继续问我。
阅读全文