📌 Demostración: Convertidor de una cadena a su versión en mayúsculas en ARM64 Assembly
💻 Lenguajes de Interfaz en TECNM Campus ITT
👨💻 Autor: Alejandro Suarez Sandoval
📅 Fecha: 2025/04/02
🎯 Descripción
Este programa convierte una cadena predeterminada en el código a su versión en mayúsculas y lo muestra en la terminal.
La implementación se realiza en:
✅ Assembly ARM64 para RaspbianOS en Raspberry Pi
🔧 Compilación en Raspberry Pi (ARM64)
as mayusculas.s -o mayusculas.o
ld mayusculas.o -o mayusculas
/*
______ ____ ____ __ __
/\ _ \/\ _`\ /'\_/`\ /'___\/\ \\ \
\ \ \L\ \ \ \L\ \/\ \/\ \__/\ \ \\ \
\ \ __ \ \ , /\ \ \__\ \ \ _``\ \ \\ \_
\ \ \/\ \ \ \\ \\ \ \_/\ \ \ \L\ \ \__ ,__\
\ \_\ \_\ \_\ \_\ \_\\ \_\ \____/\/_/\_\_/
\/_/\/_/\/_/\/ /\/_/ \/_/\/___/ \/_/
♡ ∩_∩
(„• ֊ •„)♡
| ̄U U ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄|
| • Lenguajes de Interfaz en TECNM Campus ITT |
| • Autor: Alejandro Suarez Sandoval |
| • Fecha: 2025/04/02 |
| • Descripción: Programa que convierte una cadena |
| en mayúsculas en C# y Assembly ARM64 para RaspbianOS. |
| • Demostración: |
| https://asciinema.org/a/711580 |
| • Compilación (Raspberry Pi ARM64): |
| as mayusculas.s -o mayusculas.o |
| ld mayusculas.o -o mayusculas |
| • Ejecución: ./mayusculas |
 ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄
⠂⠄⠄⠂⠁⠁⠂⠄⠄⠂⠁⠁⠂⠄⠄⠂ ⠂⠄⠄⠂☆
═════════•°• Demostración Código en lenguaje C# •°•═════════
using System;
class Program
{
static void Main()
{
// Cadena ya en memoria
string cadena = "The boyz es el mejor grupo de kpop";
// Convertir la cadena a mayúsculas
cadena = cadena.ToUpper();
// Imprimir el resultado
Console.WriteLine(cadena);
}
}
════════════════════•°• ☆ •°•══════════════════════════════
/*
/* ⠂⠄⠄⠂⠁⠁⠂⠄⠄⠂⠁⠁⠂⠄⠄⠂ ⠂⠄⠄⠂☆
═════════════•°• Código en ARM64 Assembly •°•═════════════ */
// x0-x2: Parámetros para las llamadas al sistema de Linux
// x3: Dirección de la cadena de salida
// x4: Dirección de la cadena de entrada
// w5: Carácter actual que se está procesando
// x8: Número de la función de llamada al sistema de Linux
.text
.global _start
_start:
ldr x3, =outstr // Dirección de la cadena de salida
ldr x4, =instr // Dirección de la cadena de entrada
loop:
ldrb w5, [x4], #1
// Si w5 es el carácter nulo, hemos llegado al final de la cadena
cmp w5, #0
b.eq exit_loop
// Si w5 < 'a', entonces no es un carácter en minúscula
cmp w5, #'a'
b.lt store_character
// Si w5 > 'z', entonces no es un carácter en minúscula
cmp w5, #'z'
b.gt store_character
// El carácter es una letra en minúscula
add w5, w5, #('A' - 'a') // Convertir el carácter a mayúscula
store_character:
strb w5, [x3], #1
b loop
exit_loop:
// Imprimir la cadena en mayúsculas
movz x0, #1 // stdout
ldr x1, =outstr // Apuntador al inicio de la cadena
sub x2, x3, x1 // Longitud de la cadena: fin - inicio
movz x8, #64
svc 0
// Salir del programa
movz x0, #0 // Código de salida exitoso
movz x8, #93 // Llamada al sistema para salir de Linux
svc 0
.data
// Cadena de ejemplo
instr: .asciz "The boyz es el mejor grupo de kpop\n"
outstr: .space 255