Algoritmo Ordenamiento Burbuja Ensamblador

5
Algoritmo Ordenamiento Burbuja Ensamblador Por Moises Garcia | Programacion , Tips | Viernes 17 diciembre, 2010 Deja tu opinion Hace poco en la universidad me toco programar este ordenamiento en lenguaje ensamblador (asm) y la verdad no estan facil como programar en lenguajes de alto nivel (Java,C,C++,etc). El ensamblador por ser lengueje de nivel que implementa una represantacion simbolica de los codigos de maquina binarios y otras constantes necesarios para programar una arquitectura dada de CPU . Se basa en mnemonicos que simbolizam los pasos de procesamiento , los registros del procesador, las direcciones de memoria y otras caracteristicas del lenjuage. Es muy sencillo aprenderse cada comando, cada mnemonico , pero estructurar un programa nos lo es. Por eso decidi compartir este algoritmo donde recibe unicamente como parametro la direccion del inicio del arreglo y el tamaño: Algoritmo del Ordenamiento Burbuja (Bubble Sort) BubbleSort PROCEDIMIENTO Dir_Arreglo,TamañoArreglo ;Decalcarion de variables locales necesarios local Valor1, Valor2 , i, j, k,n,bContinuar ,nmenos1 Respaldar Registros necesarios con un push registros o pusha mueve nmenos1,TamañoArreglo restale uno Mueve a un Registro Base,Dir_Arreglo mueve a j, nmenos1 mueve i,0 Mueve a un Registro Indice o Destino,4; ;lo anterior 4 para desplazamiento de tamaño de 32 bits ; 2 para 16 bits, 1 para 8 bits MIENTRASBCONTINUARES1: mueve a BCONTINUAR,0 mueve a registrobase,Dir_Arreglo mueve a j, nmenos1

Transcript of Algoritmo Ordenamiento Burbuja Ensamblador

Page 1: Algoritmo Ordenamiento Burbuja Ensamblador

Algoritmo Ordenamiento Burbuja EnsambladorPor Moises Garcia | Programacion, Tips | Viernes 17 diciembre, 2010 Deja tu opinion

Hace poco en la universidad me toco programar  este ordenamiento en lenguaje ensamblador  (asm) y la verdad no estan facil como programar en lenguajes de alto nivel (Java,C,C++,etc).  El ensamblador por ser lengueje de nivel que implementa una represantacion simbolica de los codigos de maquina binarios y otras constantes necesarios para programar una arquitectura dada de CPU . Se basa en mnemonicos que simbolizam los pasos de procesamiento , los registros del procesador, las direcciones de memoria y otras caracteristicas del lenjuage.

Es muy sencillo aprenderse cada comando, cada mnemonico , pero estructurar un programa nos lo es. Por eso decidi compartir este algoritmo donde recibe unicamente como parametro la direccion del inicio del arreglo y el tamaño:

Algoritmo del Ordenamiento Burbuja (Bubble Sort)

BubbleSort PROCEDIMIENTO Dir_Arreglo,TamañoArreglo ;Decalcarion de variables locales necesarioslocal Valor1, Valor2 , i, j, k,n,bContinuar ,nmenos1

Respaldar Registros necesarios con un push registros o pusha

mueve nmenos1,TamañoArreglo restale uno Mueve a un Registro Base,Dir_Arreglo mueve a j, nmenos1 mueve i,0 Mueve a un Registro Indice o Destino,4; ;lo anterior 4 para desplazamiento de tamaño de 32 bits ; 2 para 16 bits, 1 para 8 bits MIENTRASBCONTINUARES1: mueve a BCONTINUAR,0 mueve a registrobase,Dir_Arreglo mueve a j, nmenos1 FOR1: mueve Valor1,[RegistroBase] mueve Valor2,[RegistroBase+4] ; lo mismo que anteriormente ; en este caso el arreglo es de ; 32 bits cada elemento

mueve a registro,[RegistroBase] mueve a registro2,[RegistroBase+4] Si Valor1>Regitro2 intercambia [RegistroBase],[RegistroBase+4] mueve BCONTINUAR,1 ; esto impedira que se termine el programa ; y seguir en el bucle hasta dejar ;ordenado el arreglo

Page 2: Algoritmo Ordenamiento Burbuja Ensamblador

sino

decrementa j suma a RegistroBase,4; 32 bits compara j,0 Si no es igual FOR1 MOV un registro,BCONTINUAR comparar registro,0 si es igual SALIR:

BRINCA A MIENTRASBCONTINUARES1 SALIR: ;Restaurara Todos los Registros respaldados

retBubbleSort FINPROCEDIMIENDO

Via | http://tecnofull.com/recomendaciones-trucos-tecnologia/algoritmo-ordenamiento-burbuja-ensamblador/#ixzz1ZcUowZCl

Método de ordenación de burbuja en ensamblador ayuda?ojala y alguien me pueda decir en donde esta la falla en mi código en lenguaje ensamblador, ya intenté ensamblar con MASM 6.11, lo ensambla, pero cuando lo ejecuto, aparecen caracteres sin ninguna lógica, estoy intentando realizar el método de ordenación de burbuja.

.dosseg

.model small

.stack 100h

.datanum db 10 dup (0)salto db cr,lf,'$'

cr equ 10lf equ 13

.codemov dx,@datamov ds,dx

lea si,nummov si,0

Page 3: Algoritmo Ordenamiento Burbuja Ensamblador

mov cx,10

inicio:

mov ah,01hint 21h

mov num[si],al

mov ah,09mov dx,offset saltoint 21h

inc si

loop inicio

mov si,0mov cx,10

imprime:

mov ah,02hmov dl,num[si]int 21h

mov ah,02hmov dl,' 'int 21h

inc si

loop imprime

lea di,nummov di,0mov si,0

mov cx,10

ciclo1:

push cx

; mov al,num[si]mov cx,10

ciclo2:; mov ah,num[di]

Page 4: Algoritmo Ordenamiento Burbuja Ensamblador

cmp num[si],num[di]ja intercambiojmp sigue

intercambio:

mov al,num[si]mov num[si],num[di]mov num[di],al;mov num[si],ah;mov num[di],al;mov al,ah

sigue:

inc di

loop ciclo2

inc si

pop cx

loop ciclo1

mov si,0mov cx,10

print:

mov ah,02hmov dl,num[si]int 21h

mov ah,02hmov dl,' 'int 21h

inc si

loop print

mov ah,4chint 21h

end