Programación General => ASM (Ensamblador) => Mensaje iniciado por: R2D2 en Lunes 11 de Abril de 2005, 23:28
Título: Ordenar Alfabeticamente Una Lista
Publicado por: R2D2 en Lunes 11 de Abril de 2005, 23:28
Saludos a todos, por favor alguien me podría ayudar con un programa para organizar en orden alfabetico una lista de n bytes almacenados en memoria? Gracias Mil de antemano. :lol:
Título: Re: Ordenar Alfabeticamente Una Lista
Publicado por: Super_G en Miércoles 13 de Abril de 2005, 02:30
comparando: si tu lista es de este tipo
cadena db 'fkjklsuionajkk'
Código: Text
mov si,offset cadena
mov di,si+1
ciclo: mov al,[di]
cmp [si],al
jb next1;;hacendente o descendente
mov ah,[si]
mov [si],al
mov [di],ah
next1: inc si
inc di
jmp ciclo
algo asi....Falta el control para el ciclo.
Título: Re: Ordenar Alfabeticamente Una Lista
Publicado por: RadicalEd en Miércoles 13 de Abril de 2005, 17:31
Pregunta Super_G, cuando sabes que una cadena debe ser movida a si o a dx, ya que yo he aprendido que siempre se mueven a dx?
Gracias Chao.
Título: Re: Ordenar Alfabeticamente Una Lista
Publicado por: Super_G en Jueves 14 de Abril de 2005, 18:42
en si el movimiento es a la direcion de memoria apuntada por SI (u otro apuntador como DI,BX) y de "tamaño" fijo como un byte, en DX normalmente para usar instrucciones epeciales o interrupciones que usan por defecto a DX y no otro registro y asi deberia ser para esos casos ya que DX es el "registro de datos" pero para trabajar con elementos de una cadena se usa SI o DI.
Título: Re: Ordenar Alfabeticamente Una Lista
Publicado por: crist en Viernes 15 de Abril de 2005, 15:23
Hola, y si la lista no está en memoria sino que el usuario debe meter el Nro "n" de caracteres que tendrá la lista y almacenarla y luego ordenarla en las mismas posiciones de memoria como se haría?
Mil gracias.
Título: Re: Ordenar Alfabeticamente Una Lista
Publicado por: Super_G en Domingo 17 de Abril de 2005, 03:32
para lo del ciclo con "n" puedes usar a la instruccion LOOP y poner en CX el numero de ciclos o letras
Código: Text
mov cx,n
ciclo:
.
.
loop ciclo
ahora el ejemplo anterior trabaja sobre memoria y el resultado se queda en la misma direccion de memoria.