DATA SEGMENT ;程序是关于把100个数按从大到小排序
MEN DW 100 DUP(?) ;假设有100个数
DATA ENDS
CODE SEGMENT
ASSUME CS:CODE,DS:DATA
START:MOV AX,DATA
MOV DS,AX
LEA DI,MEN ;段初始化
MOV BL,99 ;外循环次数
NEXT:MOV SI,DI ;取第一个数
MOV CL,BL ;内循环
NEXT2:MOV AX,[SI]
ADD SI,2 ;将第一个数与后99个数比较找出最大的数
CMP AX,[SI] ;送入第一个单元中
JNC NEXT3 ;如果大于则跳转next3不交换
MOV DX,[SI] ;否则交换数
MOV [SI-2],DX
MOV [SI],AX
NEXT3:DEC CL ;内循环自减
JNZ NEXT2
;请问这个位置不是因该 SUB DI,2吗
DEC BL ;外循环以此自减联动内循环
JNZ NEXT
MOV AH,4CH
INT 21H
CODE ENDS
END START
DI的内容有自动修改的功能,可以自动减少2,不需要额外的SUB指令取改变DI。