Hola, soy bastante nuevo con esto del ensamblador y se me ha hecho un lio horrendo
;************************************************************
;Realiza un ordenamiento de un array con 20 numeros
************************************************************
.MODEL SMALL ; Modelo de memoria para el programa
.DATA ; Declaracion de variables
Mensaje1 db 'Array sin ordenar',0Ah,24h ;declaracion de mensajes,0AH,24h es un salto de linea
Mensaje2 db 'Array ordenado',0Ah,24h
Mensaje3 db 'Array con multiplos del 3',0Ah,24h
.CODE
INICIO:
; Cuerpo del programa
mov dx,OFFSET Mensaje1 ; Direccion de la cadena de texto
mov ah,9 ; Funcion para imprimir cadenas
int 21h ; Llamada al sistema operativo
INICIALIZACION:
mov si,offset tabla_o
mov cx,19
mov cambio,0
mov temp, 0
ciclo:
mov ah,[si] ;elemento 1
mov al,[si+1] ;elemento 2
cmp al,ah ;Realiza la comparacion del elemento 1 con el 2
jg mayor ;Salta si es mayor
fciclo:
inc si
loop ciclo ;ciclar hasta 20 elementos
cmp cambio,1
je INICIALIZACION
salir:
mov ah,4ch ; servicio del DOS para regresar
int 21h ; el control al procesador de comandos msdos ; Funcion para imprimir cadenas
; el control al procesador de comandos msdos
cambio db 0 ; variable de estado 1=mayor 0=menor
tabla_o db 2,9,16,1,4,5,6,32,17,10,60,63,90,12,33,45,99,100,80
temp db 0; Variable temporal
mayor:
mov cambio,1
;T temp = list[i + 1];
; list[i + 1] = list[i];
; list[i] = temp;
; madeChanges = true;
mov temp, al
mov [si + 1] ,ah
mov al, temp
mov [si],al
jmp fciclo
END INICIO
CODE ENDS
END
Emulador 8086, x86
Tengo ese codigo, me gustaria imprimir lo que ordeno a la salida del array o lo que mal ordeno (porque ni siquiera se si lo ordene bien, pero bueno la idea es hacerlo yo si tienen alguna guia o algo que me ayude pues seria genial pero es adicional!).
Y es que si utilizo el 21h con el 4ch pues me vuelve a tirar el mensaje de arriba!!.
Me ha costado bastante entenderlo, les agradeceria una guia nada mas, GRACIAS POR LEER.