Ensamblador - Ordenar cadenas

 
Vista:

Ordenar cadenas

Publicado por Maestro_kanelo (1 intervención) el 15/05/2006 09:58:16
haber tengo que realizar un programa en ensamblador en el que le introduzca 20 cadenas por teclado y me las ordene tanto alfabeticamente como por longitud, la verdad consigo intercambiar 2 cadenas, ordenarlas, pero cuando son mas de 2 cadenas ya no se ke hacer, alguien sabe de algun sitio donde encontrar el codigo, alguna ayuda o algo???

Graciasssss
Valora esta pregunta
Me gusta: Está pregunta es útil y esta claraNo me gusta: Está pregunta no esta clara o no es útil
0
Responder

RE:Ordenar cadenas

Publicado por jue (1 intervención) el 06/12/2010 21:17:41
.model small
.stack
.data
cad1 DB 'ESCRIBE el primer nombre:', 13, 10, '$'
cadena1 db 10 dup(' '),'$'


cad2 DB 13,10,'ESCRIBE el segundo nombre:', 13, 10, '$'
cadena2 db 10 dup(' '),'$'


cad3 DB 13,10,'ESCRIBE el tercer nombre:', 13, 10, '$'
cadena3 db 10 dup(' '),'$'
DB 13,10, '$'



.code



.startup
mov ah,06h ; peticion de recorrido de la pantalla
mov al,00h ; indica la pantalla completa
mov bh,07h ; attributos de color y fondo 7 blanco 0 negro
mov cx,0000h ; esquina superior izquierda renglon columna
mov dx,184fh ; esquina inferior derecha renglon columna
int 10h ; llamada a la interrupcion de video BIOS

lea SI,cadena1
mov cx,10

mov dx, offset cad1
mov ah, 9
int 21h
; input the string:
mov dx, offset cadena1
mov ah, 0ah
int 21h

mov dx, offset cad2
mov ah, 9
int 21h
; input the string:
mov dx, offset cadena2
mov ah, 0ah
int 21h

mov dx, offset cad3
mov ah, 9
int 21h
; input the string:
mov dx, offset cadena3
mov ah, 0ah
int 21h


regresa:
mov ah,07h
int 21h
cmp al,13
je termina
mov [si],al
inc SI
mov dl,al
mov ah,02h
int 21h
loop regresa


mov si,offset cad1
mov di,si+1


termina:
lea SI,cadena2
mov cx,10
regresa2:
mov ah,07h
int 21h
cmp al,13
je termina2
mov [si],al
inc SI
mov dl,al
mov ah,02h
int 21h
loop regresa2

termina2:

push ES
mov AX,DS
mov ES,AX
mov cx,10
lea SI,cadena1
lea DI,cadena2
lea SI,cadena3


fin:
mov ah,09h
int 21h

.exit
end
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar