> For the complete documentation index, see [llms.txt](https://bla0x1s-organization.gitbook.io/untitled-1/llms.txt). Markdown versions of documentation pages are available by appending `.md` to page URLs; this page is available as [Markdown](https://bla0x1s-organization.gitbook.io/untitled-1/reverse-engineering/assembly-x86.md).

# Assembly x86

## Introduccion

Assembly es un lenguaje de bajo nivel mas cercano al lenguaje maquina, que es el que usan los procesadores y computadoras. El lenguaje maquina es muy complicado de aprender ya que son cadenas de 0 y 1, siendo muy complejo se usa  Assembly que da instrucciones de una manera mas comprensible.

### Sintaxis Basica

Un programa se puede dividir en tres secciones:

* La seccion de `.data`
* La seccion de `.bss`
* La seccion de `.text`

#### Seccion "data":

Esta seccion de utiliza para declarar datos inicializados y constantes. Estos datos no cambian en tiempo de ejecucion, puede declarar varios valores constantes en esta secion.

La sintaxis para declarar `data` es:

```
section .data
```

#### La seccion "bss":

La seccion bss se utiliza para declarar variables. La sintaxis para declarar la seccion bss es:

```
section .bss
```

#### La seccion "text":

Esta seccion de usa para mantener el codigo real. Esta seccion debe empezar con la declaracion `global_start` que le dice al kernel donde comienza la ejecucion del programa. Su sintaxis es:

```
section .txt
    global_start
_start:
```

### Comentarios

Los comentarios comienzan con `;` asi:

```
; Esto es un comentario
```

O tambien en la misma linea de la instruccion:&#x20;

```
add eax, ebx       ; Comentario de la esta instruccion
```
