回 帖 发 新 帖 刷新版面

主题:[求助]求大家帮我改一改这个程序。

题目:建立学生名次表,以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这个数字,反而有一个“:”冒号,不知道我的程序哪里设得不对呢?请高手帮我改动一下啦,谢谢大家了。

回复列表 (共1个回复)

沙发

10是ASCII:'1','0'.
而不是你那样输出的~看看其他的贴子把.

我来回复

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