Macros
* Están basados en texto
* Son ampliados por el ensamblador antes de que comience el proceso de ensamblaje.
* Se puede utilizar para definir constantes, etiquetas e instrucciones.
* No se puede utilizar para crear estructuras de control (como bucles y ramas)
Procedimientos
* Están basados en binario
*Se almacenan en el archivo ejecutable
*Se puede llamar desde otras partes del programa
* Puede usarse para crear estructuras de control.
En general, las macros son más eficientes que los procedimientos porque no requieren instrucciones adicionales de la máquina. Sin embargo, las macros pueden ser difíciles de depurar porque no son visibles en el código ensamblador. Los procedimientos son más fáciles de depurar porque se pueden recorrer paso a paso en el depurador.
A continuación se muestra un ejemplo de una macro en lenguaje ensamblador:
```
.macro inc(r)
addi r, r, 1
.endm
```
Esta macro incrementa el valor en el registro `r`. Se utiliza de la siguiente manera:
```
inc r1; Incrementar el valor en r1
```
A continuación se muestra un ejemplo de un procedimiento en lenguaje ensamblador:
```
Cª:
agregue r1, r1, #1; Incrementar el valor en r1
bxlr; Regreso del procedimiento
```
Este procedimiento incrementa el valor en el registro `r1` y luego regresa a la persona que llama. Se llama de la siguiente manera:
```
bl inc; Llame al procedimiento inc.
```