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.