Algoritmo Ordenamiento Burbuja Ensamblador
-
Upload
oskr-martin -
Category
Documents
-
view
3.069 -
download
32
Transcript of 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
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
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]
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