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 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

0 si es igual SALIR: BRINCA A MIENTRASBCONTINUARES1 SALIR: . lo ensambla.Restaurara Todos los Registros respaldados ret BubbleSort FINPROCEDIMIENDO Via | http://tecnofull.'$' cr equ 10 lf equ 13 .0 Si no es igual FOR1 MOV un registro.code mov dx.dosseg . 32 bits compara j.com/recomendaciones-trucos-tecnologia/algoritmo-ordenamientoburbuja-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.BCONTINUAR comparar registro. ya intenté ensamblar con MASM 6. estoy intentando realizar el método de ordenación de burbuja.0 .model small .stack 100h .@data mov ds.data num db 10 dup (0) salto db cr.lf.sino decrementa j suma a RegistroBase. pero cuando lo ejecuto. .11.num mov si.4. aparecen caracteres sin ninguna lógica.dx lea si.

mov al.10 inicio: mov ah.09 mov dx.al mov ah.0 mov cx.0 mov si.10 imprime: mov ah.num[si] mov cx.num[di] .10 ciclo2: .mov cx.10 ciclo1: push cx .num[si] int 21h mov ah.offset salto int 21h inc si loop inicio mov si.02h mov dl. mov ah.' ' int 21h inc si loop imprime lea di.num mov di.02h mov dl.01h int 21h mov num[si].0 mov cx.

02h mov dl.ah sigue: inc di loop ciclo2 inc si pop cx loop ciclo1 mov si.mov num[si].10 print: mov ah.02h mov dl.mov al.num[di] ja intercambio jmp sigue intercambio: mov al.num[si] mov num[si].al .num[si] int 21h mov ah.al .ah .4ch int 21h end .num[di] mov num[di].mov num[di].cmp num[si].0 mov cx.' ' int 21h inc si loop print mov ah.

Sign up to vote on this title
UsefulNot useful