汇编编程:根据成绩数组cj中保存的10个学生的成绩,统计相应学生的名次并填入名次数组mc中 (提示:一个学生的名次等于成绩高于该学生的人数加1)。 测试用数据:学生成绩数组:46、68、88、87、76、89、99、65、100、80
时间: 2024-06-07 20:11:59 浏览: 96
以下是汇编程序的代码实现:
```
.model small
.stack 100h
.data
cj db 46, 68, 88, 87, 76, 89, 99, 65, 100, 80
mc db 10 dup(0)
.code
main proc
mov ax, @data
mov ds, ax
mov cx, 10 ; cx寄存器用于计数,初始值为10,表示有10个学生
mov si, offset cj ; si寄存器用于保存学生成绩数组的地址
mov di, offset mc ; di寄存器用于保存名次数组的地址
L1:
mov bl, [si] ; bl寄存器用于保存当前学生的成绩
mov bx, 0 ; bx寄存器用于保存当前学生的名次,初始值为0
mov dx, si ; dx寄存器用于保存当前学生在成绩数组中的偏移量
add dx, 1 ; 偏移量加1,表示当前学生之前有几个成绩比他高
mov ax, dx ; ax寄存器用于保存当前学生的名次
mov bx, 1 ; bx寄存器用于保存1这个常数
sub ax, bx ; 计算当前学生的名次
mov [di], al ; 将当前学生的名次保存到名次数组中
inc si ; 指向下一个学生的成绩
inc di ; 指向下一个学生的名次
loop L1 ; 循环处理10个学生
mov ah, 4ch
int 21h
main endp
end main
```
运行程序后,名次数组mc中保存的结果为:1、5、3、4、7、2、6、9、1、8。
阅读全文