HYANETWORKS

Tag: ensamblador

Ensamblador NASM para nuestro Linux!

by Oxigen on Oct.28, 2009, under Linux

Bueno, pues todos los que estamos dentro del área de informática, sistemas o electrónica seguramente nos hemos topado en algún momento de la carrera con el llamado lenguaje ensamblador, el cual no es más que un lenguaje de bajo nivel. Esto no quiere decir que sea un lenguaje menos bueno que C o Java, sino que más bien va hacia que es un lenguaje que está más dirigido a la programación de las interrupciones del procesador.

Sin embargo, en el mendio de la programación ensamblador existe un pequeño problema, la mayoría de la documentación y de software para trabajar con tal lenguaje está mayormente monopolizado por aplicaciones microsoft (MASM – Microsoft Assambler) para procesadores Intel. Aunqué hay algunún software por ahí también para windows (NASM) que hace este trabajo pero siguiento los preceptos GNU hasta hace poco se desarrolló una alternatíva para nuestro linux, lo único que tenemos que hacer para instalarlo y trabajar con el es:

sudo apt-get install nasm

Aquí un pequeño ejemplo del método de ordenación de quicksort para Nasm.

quicksort:
         push ebp
         mov ebp,esp
         push esi
         push ebx
         push ecx
         push edx
         mov ebx,dword[ebp + 12]
         mov ecx,dword[ebp + 16]
         cdq
         mov eax, ebx
         add eax, ecx
         push ecx
         mov ecx,2
         div ecx
         pop ecx
         xchg edx,eax
         mov esi, [ebp + 8]
         mov edx,dword[esi + edx * 4]
         qs@L1:
                qs@L1@L1:
                        cmp dword[esi + ebx * 4],edx
                        jge qs@L1@L1@out
                        inc ebx
                        jmp qs@L1@L1
                qs@L1@L1@out:
                qs@L1@L2:
                        cmp dword[esi + ecx * 4],edx
                        jle qs@L1@L2@out
                        dec ecx
                        jmp qs@L1@L2
                qs@L1@L2@out:
                qs@L1@IF1:
                        cmp ebx, ecx
                        jg qs@L1@IF1@out
                        mov eax, dword[esi + ebx * 4]
                        xchg eax, dword[esi + ecx * 4]
                        mov dword[esi + ebx * 4], eax
                        inc ebx
                        dec ecx
                qs@L1@IF1@out:
                cmp ebx,ecx
                jle qs@L1
         qs@L1@out:
         qs@IF1:
                cmp dword[ebp + 12],ecx
                jge qs@IF1@out
                push ecx
                push dword[ebp + 12]
                push esi
                call quicksort
         qs@IF1@out:
         qs@IF2:
                cmp ebx, dword[ebp + 16]
                jge qs@IF2@out
                push dword[ebp + 16]
                push ebx
                push esi
                call quicksort
         qs@IF2@out:
         pop edx
         pop ecx
         pop ebx
         pop esi
         pop ebp
retn 12

En fin, espero que les sirva de algo para todos aquellos que tengan que trabajar con ASM pero que no quieran usar el ensamblador de windows o que si están en linux, no tengan que cambiar para trabajar.

3 Comments :, , more...

Looking for something?

Use the form below to search the site:

Still not finding what you're looking for? Drop a comment on a post or contact us so we can take care of it!

Visit our friends!

A few highly recommended friends...