读书人

排名词解决方法

发布时间: 2012-02-16 21:30:36 作者: rapoo

排名词
以下是我写的一个排名次的算法,问题见代码中注释

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 应该定义成变量吧. 作为常量定义时, 它们值的改变是以编译时扫描到的顺序来决定的, 不是以执行次序来的.

读书人网 >汇编语言

热点推荐