Bueno ya!!!!!
creo que la ordenacion de los datos puede ser hecha con una comparacion utilizando la instruccion ICMP para hacer las conparaciones con signo; ahora primero se debe estableser el lugar de la ordenacion; por decir puedo ordenarlos en ellugar de origen y despues copiarlo ó puedo copiarlos y ordenarlos en el destino. Para el ordenamiento yo utilizaria un metodo conocido pero que no recuerdo el nombre que aprendi en C++ con 2 ciclos
y escojo la segunda opcion :
primero apunto a la direccion con SI(supongo que las direcciones estan en hexa):
mov si,1501h
despues pongo el numero de elementos en CX(contador)
mov cx,[14ffh]
apunto al destino con DI
mov di,1601h
ahora copiare al destino con la instruccion de cadena MOVSB y REP :
push cx ;;empilo el contador
cld
rep movsb
la copia ya esta hecha ahora elordenamiento primero:
popo cx ;recupermaos el contador
mov si,1601h ;;apuntmaos al primer elemento
lea di,[si+1] ;,apuntamos al segundo elemento
dec cx ;;se comparara el numero de elementos menos una ves
ahora los 2 ciclos anidados con un solo contador:
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
p3: push cx ;;empilamos el contador para el ciclo externo
mov al,[si] ;;moviemiento del primer elelmento
p0: icmp al,[di] ;;comaracion con el segundo elemento
ja c1 ;; si el 1º myor al 2º intercambio
p4: inc di ;; incrementsmo el 2º->3º
loop p0 ;; y asi el primer siclo con el primer elemento
jmp p1 ;;termina el segundo ciclo(interno) ciclo
c1: mov ah,[di] ;; codigo par aintercambiar
mov [di],al
mov [si],ah
jmp p4
p1: pop cx ;;recuparmos el contador
inc si ;;incremnetamos el 1º->2º
lea di,[si+1] ;; apuntamos al 3º
loop p3 ;; continuamos con el resto(primer ciclo o ciclo externo)
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
y eso seriapor lo demas espero que sirva; y de seguro hay errores pero la idea es supongo lo mas importante