# DECLARACIONES

### Declaraciones

Los programas constan de tres tipos de declaraciones:

* Instrucciones ejecutables o instrucciones.
* Directivas de assembly o pseudo-ops
* Macros

Las Instruciones ejecutables le dicen al procesador que hacer, cada instruccion consta de un codigo de operacion (opcode), cada un es generada en codigo maquina.

Las directivas o pseudo-ops informan sobre los diversos aspectos del proceso de ensamblaje. Estos no son ejecutables y no generan lenguaje maquina.

Las macros son basicamente la sustiticion de texto.

#### Sintaxis de las declaraciones

Se ingresa una declaracion por linea, cada una sigue el siguiente formato:

```
[label]    mnemonic    [operands]    [; commentario]
```

Los campos entre corchetes son opcionales. Una instruccion basica tiene dos partes, la primera es el nombre de instruccion (mnemonic) que se va ejecutar, y la segunda son los `operands` o paramtros del comando.

Las siguientes son algunos ejemplos de declaraciones tipicas en assembly:

```
INC COUNT        ; Incrementa la variable de memoria.

MOV TOTAL, 48    ; Transfiere el valor 48 en la variable de memoria total.

ADD AH, BH        ; Agrega el contenido del registro BH al registro AH.

AND MASK1, 128    ; Realiza la operacion AND en la variables MASK1 y 128

AND MASKS, 10     ; Suma 10 a la variables

MOV AL, 10        ; Mueve 10 al registro AL
```

#### Hello Word en Assembly

```
section .text
    global _start
    
_start:                        ; Da el punto de entrada
    mov edx,len                ; Longitud del mensaje
    mov ecx,msg                ; Mensaje a escribir
    mov ebx,1                   ; Descrtiptor del archivo (stdout)
    mov eax,4                    ; Numero de llamadas del sistema (sys_write)
    int 0x80                    ; Llamada al kernel
    
    mov eax,1                    ; Nuemero de llamadas
    int 0x80                    ; Llamadas al kernel

section .data
msg db 'Hello, Word', 0xa      ; Cadena a imprimir
len equ $ - msg                ; Longitud de la cadena
```


---

# Agent Instructions: Querying This Documentation

If you need additional information that is not directly available in this page, you can query the documentation dynamically by asking a question.

Perform an HTTP GET request on the current page URL with the `ask` query parameter:

```
GET https://bla0x1s-organization.gitbook.io/untitled-1/reverse-engineering/assembly-x86/declaraciones.md?ask=<question>
```

The question should be specific, self-contained, and written in natural language.
The response will contain a direct answer to the question and relevant excerpts and sources from the documentation.

Use this mechanism when the answer is not explicitly present in the current page, you need clarification or additional context, or you want to retrieve related documentation sections.
