Práctica académica — **ARM64 Assembly en Termux (Android)**
Tema: Compilación y ejecución de *Hola Mundo* en GNU Assembly (AArch64)

---

**Objetivo**
Que el estudiante instale y use en **Termux** las herramientas básicas de **GNU Assembly** para **ARM64**, edite código con **nano**, compile manualmente con `$as` y `$ld`, y ejecute un programa funcional en Linux ARM64. Tambien tenga una mejor prespectiva de lo que involucra la nube de AWS Ubuntu con ARM64, y la tan famosa Raspberry Pi 5 y sus decenas de variantes en el mundo.


---

**Entorno requerido**

* Teléfono Android (ARM64)
* App **Termux** instalada desde F-Droid
* Conexión a internet

---

### 1) Actualización del sistema en Termux

```bash
pkg update && pkg upgrade -y
```

---

### 2) Instalación de herramientas GNU

```bash
pkg install -y binutils nano
```

Herramientas que se usarán:

* `as` → ensamblador GNU
* `ld` → enlazador GNU
* `nano` → editor de texto en terminal

---

### 3) Crear el archivo fuente en Assembly

```bash
nano hola.s
```

---

### 4) Código ARM64 – Hola Mundo (GNU/Linux)

Copiar **exactamente** el siguiente contenido en `hola.s`:

```asm

# ⌨️ THE MATRIX: ANALOG CONTROL MODULE 🧪
# ░█▀▀░█▀█░█▀▀░█░█░█░░░█▀▀
# ░█░█░█▀█░▀▀█░█░█░█░░░▀▀█
# ░▀▀▀░▀░▀░▀▀▀░▀▀▀░▀▀▀░▀▀▀
# |￣￣￣￣￣￣￣￣￣￣￣￣￣￣￣￣￣￣￣￣￣￣￣￣￣￣￣￣￣￣￣￣￣￣￣￣￣￣￣￣￣￣|
# | • Lenguajes de Interfaz en TECNM Campus ITT                   |
# | • Autor: DEMO                                                 |
# | • Fecha: 2026/02/06                                           |
# ￣￣￣￣￣￣￣￣￣￣￣￣￣￣￣￣￣￣￣￣￣￣￣￣￣￣￣￣￣￣￣￣￣￣￣￣￣￣￣￣￣￣￣
#
# 🧬🔧 Assembly + hardware = manipulación de la realidad
# ════════•°• Lectura analógica en tiempo real •°•════════

.section .data
msg:
    .ascii "Hola mundo desde ARM64 en Termux\n"
len = . - msg

.section .text
.global _start

_start:
    mov x0, #1          // stdout
    ldr x1, =msg        // dirección del mensaje
    mov x2, #len        // longitud
    mov x8, #64         // syscall write (ARM64)
    svc #0

    mov x0, #0          // código de salida
    mov x8, #93         // syscall exit
    svc #0
```

Guardar en **nano**:
`CTRL + O` → Enter
Salir: `CTRL + X`

---

### 5) Ensamblar el programa

```bash
as -o hola.o hola.s
```

Resultado esperado:

* Se genera el archivo objeto `hola.o`
* Sin mensajes de error

---

### 6) Enlazar el ejecutable

```bash
ld -o hola hola.o
```

Resultado esperado:

* Se genera el ejecutable `hola`

---

### 7) Ejecutar el programa

```bash
./hola
```

Salida esperada en pantalla:

```text
Hola mundo desde ARM64 en Termux
```

---

### 8) Verificación de arquitectura (opcional)

```bash
file hola
```

Resultado típico:

```text
ELF 64-bit LSB executable, ARM aarch64
```

---

**Conceptos reforzados en la práctica**

* Arquitectura **ARM64 (AArch64)**
* Uso directo de **syscalls Linux**
* Flujo completo: `.s → .o → ELF`
* Uso real de `$as` y `$ld`
* Edición en terminal con **nano**
* Entorno Linux real desde Android (Termux)

---

**Resultado final de la práctica**
El estudiante obtiene un ejecutable **ELF ARM64 funcional**, creado y enlazado manualmente en Termux, comprendiendo el flujo real de desarrollo en **GNU Assembly para Linux**.
