题目:建立学生名次表,以grade为首地址的数组中保存了学生的成绩,其中grade+i保存学号为i+1的学生的成绩。要求建立一个10个字的rank数组,并根据grade中的学生成绩将学生名次填入rank数组中,其中rank+i有内容是学号为i+1学生的名次。(提示:一个学生的名次等于成绩高于该学生的人数加1)
我的程序:
DSEG SEGMENT
grade dw 88,75,95,63,98,78,87,78,90,60
rank dw 10 dup(?)
stop db '$'
DSEG ENDS
CSEG SEGMENT
main proc far
assume cs:CSEG, ds:DSEG
start: mov ax, DSEG
mov ds, ax
mov di,10
mov bx,0
loop:
mov si,offset grade
mov dx,1
mov cx,10
mov ax,grade[bx]
next:
cmp ax,[si]
jge no_count
inc dx
no_count:
add si,2
loop next
add dx,30h
mov rank[bx],dx
add bx,2
cmp bx,20
jne loop
lea dx,rank
mov ah,09h
int 21h
mov ax, 4c00h
int 21h
main endp
CSEG ENDS
end start
结果:4 8 2 9 1 6 5 6 3 :
这个程序我的希望是输出1-10的,但结果中没有10这个数字,反而有一个“:”冒号,不知道我的程序哪里设得不对呢?请高手帮我改动一下啦,谢谢大家了。