Ir al contenido principal

Entradas

Mostrando las entradas con la etiqueta gas

Salto Incondicional JMP en Gnu Assembler (GAS)

Los saltos son la forma básica de control de flujo en lenguaje ensamblador, un salto acompañado de una etiqueta de destino, nos permite llevar al procesador a ejecutar en cualquier región de nuestro código. en este ejemplo, veremos la forma mas básica de salto, el salto incondicional, el cual modifica el flujo del programa, y lo dirige hacia una etiqueta definida. como primer paso para entender la forma en la que actúa una instrucción "jmp", vamos a usar un pequeño ejemplo, que imprime dos mensajes en pantalla, uno después de otro en una secuencia simple . text . global _start _start: # write msg movl $len , % edx movl $msg , % ecx movl $1 , % ebx movl $4 , % eax int $ 0x80 # write msg1 movl $len1 , % edx movl $msg1 , % ecx movl $1 , % ebx movl $4 , % eax int $ 0x80 # exit movl $0 , % ebx movl $1 , % ...

Hola Mundo en Ensamblador GNU Assembler (GAS)

Este post busca ayudar a dar los primeros pasos en el desarrollo de aplicaciones en lenguaje ensamblador, en entornos GNU Linux para el ejemplo se utiliza Debian Lenny, el ensamblador y enlazador de GNU contenidos en el paquete binutils (as, ld). Básicamente los pasos que debemos seguir son los siguientes instalar el paquete binutils, para esto en una consola iniciada en modo root. apt-get install binutils cuando la instalacion se completa correctamente, podemos ejecutar "as" y "ld" para ensamblar y linkar respectivamente. el programa que vamos a crear, es el hola mundo, para esto vamos a utilizar las llamadas al sistema "write" y "exit" como se detalla en el código fuente a continuación . text . global _start _start: movl $len , % edx movl $msg , % ecx movl $1 , % ebx movl $4 , % eax int $ 0x80 movl $0 , % ebx movl $1 , % eax int $ 0x80 . data    ...