当前位置: 代码迷 >> 汇编语言 >> 排名词解决方法
  详细解决方案

排名词解决方法

热度:1599   发布时间:2013-02-26 00:00:00.0
排名词
以下是我写的一个排名次的算法,问题见代码中注释

NUM   =   3
I   =   1
J   =   1

DATAS   SEGMENT
        GRADE   DW   1,2,3
        RANK     DW   NUM   DUP(?)
DATAS   ENDS

CODES   SEGMENT
        ASSUME   CS:CODES,DS:DATAS
START:
        MOV   AX,DATAS
        MOV   DS,AX

        MOV   RANK[0],1

LPI:
MOV   RANK[2*I],I+1 ;无论是第几次运行到这里,I的植总是1
MOV   AX,GRADE[2*I]
J=I
LPJ:
J=J-1
CMP   AX,GRADE[2*J]
JL     TRYJ        
      JE     EQUAL
        DEC   RANK[2*I]
INC   RANK[2*J]
JMP   TRYJ
EQUAL:
MOV   AX,RANK[2*J]
MOV   RANK[2*I],AX
TRYJ:
MOV   AX,J
CMP   AX,0
JNZ   LPJ  

TRYI:
I=I+1
MOV   AX,I   ;
CMP   AX,NUM
JBE     LPI


   
        MOV   AH,4CH
        INT   21H
CODES   ENDS
        END   START

------解决方案--------------------------------------------------------
I, J 应该定义成变量吧. 作为常量定义时, 它们值的改变是以编译时扫描到的顺序来决定的, 不是以执行次序来的.
  相关解决方案