Professional Documents
Culture Documents
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 tamao: Algoritmo del Ordenamiento Burbuja (Bubble Sort)
BubbleSort PROCEDIMIENTO Dir_Arreglo,TamaoArreglo ;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,TamaoArreglo 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 tamao 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 ret BubbleSort FINPROCEDIMIENDO
Via | http://tecnofull.com/recomendaciones-trucos-tecnologia/algoritmo-ordenamientoburbuja-ensamblador/#ixzz1ZcUowZCl
mov cx,10 inicio: mov ah,01h int 21h mov num[si],al mov ah,09 mov dx,offset salto int 21h inc si loop inicio mov si,0 mov cx,10 imprime: mov ah,02h mov dl,num[si] int 21h mov ah,02h mov dl,' ' int 21h inc si loop imprime lea di,num mov di,0 mov 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 intercambio jmp 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,0 mov cx,10 print: mov ah,02h mov dl,num[si] int 21h mov ah,02h mov dl,' ' int 21h inc si loop print mov ah,4ch int 21h end