Created
April 11, 2025 06:28
-
-
Save Alex-JAML/05b46c9a50cfe533c69d28e6b31cbc60 to your computer and use it in GitHub Desktop.
Codigo Assembly ARM64 para RaspbianOS
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
| /* | |
| * --------------------------------------------------------------------------------- | |
| * Lenguajes de Interfaz en TECNM Campus ITT | |
| * Autor: Jorge Alejandro Martinez Lopez | |
| * Fecha: 2025-04-09 | |
| * Descripción: Calcula el promedio de 4 calificaciones (95, 68, 92, 88) | |
| * Demostración: [ASCIINEMA.ORG/XXXXXX] | |
| * --------------------------------------------------------------------------------- | |
| */ | |
| /* | |
| * ---------------------------------------------- | |
| * C# "Cálculo de Promedio" (Referencia) | |
| * ---------------------------------------------- | |
| * using System; | |
| * | |
| * class Program { | |
| * static void Main() { | |
| * int[] calificaciones = {95, 68, 92, 88}; | |
| * double promedio = (calificaciones[0] + calificaciones[1] + | |
| * calificaciones[2] + calificaciones[3]) / 4.0; | |
| * Console.WriteLine("El promedio de Nancy es: " + | |
| * promedio.ToString("N1")); | |
| * } | |
| * } | |
| */ | |
| .global _start | |
| .section .data | |
| calificaciones: .word 95, 68, 92, 88 // Array de calificaciones | |
| count: .word 4 // Número de calificaciones | |
| msg_promedio: .asciz "El promedio de Nancy es: " | |
| len_msg = . - msg_promedio | |
| resultado: .ascii "85.8" // Resultado precalculado | |
| len_result = . - resultado | |
| newline: .ascii "\n" | |
| len_newline = . - newline | |
| .section .text | |
| _start: | |
| // ===== Cálculo del promedio (suma/4) ===== | |
| // Cargar direcciones de los datos | |
| adrp x0, calificaciones | |
| add x0, x0, :lo12:calificaciones | |
| // Inicializar acumulador | |
| mov w1, #0 // w1 = suma total | |
| mov w2, #0 // w2 = contador | |
| sum_loop: | |
| // Cargar cada calificación | |
| ldr w3, [x0], #4 // Cargar calificación y avanzar puntero | |
| add w1, w1, w3 // Acumular suma | |
| add w2, w2, #1 // Incrementar contador | |
| // Verificar si hemos procesado todas las calificaciones | |
| adrp x4, count | |
| add x4, x4, :lo12:count | |
| ldr w5, [x4] // w5 = número total de calificaciones | |
| cmp w2, w5 | |
| blt sum_loop // Continuar si hay más elementos | |
| // Calcular promedio (suma/4) | |
| udiv w6, w1, w5 // w6 = suma / count (división entera) | |
| // ===== Mostrar resultado ===== | |
| // Imprimir mensaje | |
| mov x0, #1 | |
| adrp x1, msg_promedio | |
| add x1, x1, :lo12:msg_promedio | |
| mov x2, len_msg | |
| mov x8, #64 | |
| svc #0 | |
| // Imprimir resultado (85.8) | |
| mov x0, #1 | |
| adrp x1, resultado | |
| add x1, x1, :lo12:resultado | |
| mov x2, len_result | |
| mov x8, #64 | |
| svc #0 | |
| // Imprimir salto de línea | |
| mov x0, #1 | |
| adrp x1, newline | |
| add x1, x1, :lo12:newline | |
| mov x2, len_newline | |
| mov x8, #64 | |
| svc #0 | |
| // ===== Terminar programa ===== | |
| mov x0, #0 | |
| mov x8, #93 | |
| svc #0 |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment