主题:高手请教!!!!!!急
有一个程序:
以GRADE为首地址的10个字的数组中保存有学生成绩。建立一个10个字的RNAK 数组,并根据GRADE中的学生成绩将学生名次填入RANK数组中(提示:一个学生的名次等于成绩高于等于该学生的人数加1)。
我编写的无法正确显示10个,只能是9个,第10个数会无法参与到循环中去,显示的结果会有:,这是为什么呀,谁能帮助修改一下吗?
data segment
grade dw 87,54,74,25,68,90,80,47,56,12
rank dw 10 dup(?)
data ends
code segment
assume cs:code,ds:data
start:mov ax,data
mov ds,ax
mov di,0
xor bx,bx
lop1:mov ax,grade[bx]
mov dx,1
mov cx,10
lea si,grade
lop2: cmp ax,[si]
jge lop3
inc dx
lop3: add si,type grade
loop lop2
mov rank[bx],dx
add bx,2h
inc di
cmp di,10
jl lop1
mov cx,10
lea si,rank
out1:mov dx,[si]
adc dx,30h
mov ah,2
int 21h
add si,2
loop out1
以GRADE为首地址的10个字的数组中保存有学生成绩。建立一个10个字的RNAK 数组,并根据GRADE中的学生成绩将学生名次填入RANK数组中(提示:一个学生的名次等于成绩高于等于该学生的人数加1)。
我编写的无法正确显示10个,只能是9个,第10个数会无法参与到循环中去,显示的结果会有:,这是为什么呀,谁能帮助修改一下吗?
data segment
grade dw 87,54,74,25,68,90,80,47,56,12
rank dw 10 dup(?)
data ends
code segment
assume cs:code,ds:data
start:mov ax,data
mov ds,ax
mov di,0
xor bx,bx
lop1:mov ax,grade[bx]
mov dx,1
mov cx,10
lea si,grade
lop2: cmp ax,[si]
jge lop3
inc dx
lop3: add si,type grade
loop lop2
mov rank[bx],dx
add bx,2h
inc di
cmp di,10
jl lop1
mov cx,10
lea si,rank
out1:mov dx,[si]
adc dx,30h
mov ah,2
int 21h
add si,2
loop out1