回 帖 发 新 帖 刷新版面

主题:高手请教!!!!!!急

有一个程序:
以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

回复列表 (共1个回复)

沙发

inc di
     cmp di,10
     jl lop1
     改成
     inc di
     cmp di,10
     jle lop1

我来回复

您尚未登录,请登录后再回复。点此登录或注册