下面的程序中LOOP LOP1 循环中CX貌似总是N-1,该怎么结束循环?是不是错了?

设某一数组的长度为N,个元素均为字数据,试编制一个程序使该数组中的数据按照从小到大的次序排列。(要从大到小排序,只需把JBE改为JAE即可)
ADATA SEGMENT

N EQU 10

DATA DW 87H,54H,78H,45H,35H,23H,04H,12H,03H,21H

ADATA ENDS
ACODE SEGMENT

ASSUME CS:ACODE,DS:ADATA

START:MOV AX,ADATA

MOV DS,AX

       MOV BX,0      
       MOV CX,N     
       DEC CX      

LOP1: MOV DX,CX

LOP2: MOV AX,DATA[BX]

CMP AX,DATA[BX+2]

JBE CONTI

XCHG AX,DATA[BX+2]

MOV DATA[BX],AX

CONTI: ADD BX,2

LOOP LOP2

MOV CX,DX

MOV BX,0

LOOP LOP1 ;<<<<<----------怎么结束循环???
MOV AH,4CH

INT 21H

ACODE ENDS
END START