ordenar de mayor a menor 5 numeros ingresados x el teclado!!!

Iniciado por XxArCaNgElxX, 20 Mayo 2011, 21:19 PM

0 Miembros y 1 Visitante están viendo este tema.

XxArCaNgElxX

Bueno quisiera aver si alguien me puede ayudar en esto aca tengo el codigo q me vota el mayor numero de 4 numeros eso se modffica a 5 numeros normal sino lo q quiero es la ordenacion que me imprima los 5 numeros de mayor a menor y en el codigo solo vota numeros unidades del 0 al 9 como se modificaria eso para q sean decenas centenas o miles los numeros ingresados x el teclado
Ahi les va mi codigo modifcado aver si me pueden ayudar


;programa que te imprime el numero mayor al ingresar desde teclado
; DECLARACION DEL SEGMENTO DE PILA
;Todos los programas han de llevar pila, con el fin de depositar la información necesaria para las llamadas
;a funciones, o bien almacenar datos temporalmente. En este bloque se define un tamaño para la pila.
pila segment ; Inicio del segmento de pila
DB 64H(' ') ; Inicializacion de la pila
pila ENDS ; Fin del segmento de pila


datos segment  ;inicio del segmento de datos  ds=reserva de espacio para todas als variables q usa el programa
LINE db 10,13,36
aviso1 DB " Ing de Sistemas e informatica: $"

aviso2 DB " UJCM: $"
aviso DB " EL MAYOR ES: $"
carac DB 64H DUP(' ')
MAYOR DB 00
datos ends   ;fin del segmento de datos

CODE SEGMENT  ;Definición de todos los procedimientos e instrucciones del programa.
numerom proc far
ASSUME CS:code, SS:pila, ds: datos  ;La directiva ASSUME no inicializa los registros de segmento, simplemente
;conduce al compilador dónde está cada uno y su uso

inicio: push ds
mov ax, datos  ;AX=Dirección del segmento de datos
    MOV DS, AX    ; DS=AX. Indicar el segmento de datos
mov cx, 0 ;Proposito: transferencia de datos entre celdas de memoria
;En este caso se ha asignado al registro CX el valor 25, el cual será utilizado como contador de bucle.
;registros y acumulador   mob: destino,fuente

sigue: cmp cx, 4    ;cmp=La instrucción que se utiliza para comparar se llama CMP (CoMPare).
je fin ;je= si es igual

MOV AH, 01
INT 21H ;interrupcion servicios de la pc

MOV CARAC[BX], AL
MOV AH, 09
LEA DX, LINE
INT 21H
MOV AL, CARAC[BX]
CMP AL, MAYOR
JL AGREGAR    ;salta si es menor q o salta si es mayor
MOV MAYOR, AL
INC BX
inc cx
jmp sigue   ;Esta instruccion se utiliza para desviar el flujo de un programa
;sin tomar en cuenta las condiciones actuales de los datos

agregar:INC BX
inc cx
jmp sigue

fin:
lea dx, line
mov ah, 09
int 21h

lea dx, aviso2
mov ah, 09

int 21h
lea dx, aviso1
mov ah, 09

int 21h
lea dx, aviso
mov ah, 09


int 21h

mov al, mayor
mov ah, 02

mov dl, AL
int 21h

mov ah, 4ch
int 21h

numerom endp
code ends
end inicio