GNU/Linux β€’ xterm-256color β€’ bash 143 views

πŸ‘¨β€πŸ’» Autor: Rojas Garcia Kevin Argenis πŸ—“οΈ Fecha: 2025-04-09 πŸŽ“ Campus: TECNM Instituto TecnolΓ³gico de Tijuana πŸ“½οΈ Demo en Asciinema

1.- Calcular el nΓΊmero de cm en 32 pulgadas. (1 pulgada = 2.5 cm)

.global _start
.section .data
mensaje: .asciz "32 pulgadas equivalen a %d cm\n"

.section .text
_start:
    mov x0, #32          // pulgadas
    mov x1, #25          // multiplicamos por 25
    mul x2, x0, x1       // resultado = 32 * 25 = 800
    mov x3, #10
    udiv x2, x2, x3      // dividir entre 10 para ajustar decimal

    ldr x0, =mensaje
    mov x1, x2
    bl printf

    mov x8, #93
    mov x0, #0
    svc #0

.extern printf

2.- Calcular las libras en 212 kilogramos (1 kg = 2.2 lb)

.global _start
.section .data
mensaje: .asciz "212 kilogramos son aproximadamente %d libras\n"

.section .text
_start:
    mov x0, #212         // kilogramos
    mov x1, #22          // 2.2 como 22
    mul x2, x0, x1
    mov x3, #10
    udiv x2, x2, x3

    ldr x0, =mensaje
    mov x1, x2
    bl printf

    mov x8, #93
    mov x0, #0
    svc #0

.extern printf

3.- Convertir 200 libras y 8 onzas a kilogramos (1 kg = 2.204623 lb)

.global _start
.section .data
mensaje: .asciz "Peso total: %d kilogramos (aprox)\n"

.section .text
_start:
    mov x0, #200         // libras
    mov x1, #8           // onzas
    mov x4, #16
    udiv x1, x1, x4      // convertir onzas a libras (entero)
    add x0, x0, x1

    ldr x1, =1000000
    ldr x2, =2204623
    mul x3, x0, x1
    udiv x5, x3, x2      // x5 es el resultado en kilogramos

    ldr x0, =mensaje
    mov x1, x5
    bl printf

    mov x8, #93
    mov x0, #0
    svc #0

.extern printf


4.- Convertir 1000 pies/minuto a centΓ­metros/segundo.

.global _start
.section .data
mensaje: .asciz "Velocidad: %d cm/seg\n"

.section .text
_start:
    mov x0, #1000        // pies por minuto
    mov x1, #305         // 1 pie = 30.48 cm, *10 para mantener precisiΓ³n
    mul x2, x0, x1       // resultado en decicm/minuto
    mov x3, #60
    udiv x2, x2, x3      // por segundo
    mov x4, #10
    udiv x2, x2, x4      // ajustar decimal: /10

    ldr x0, =mensaje
    mov x1, x2
    bl printf

    mov x8, #93
    mov x0, #0
    svc #0

.extern printf


5.- Calcular el precio por metro cuadrado, si el precio por yarda cuadrada es $9.

.global _start
.section .data
mensaje: .asciz "Precio por metro cuadrado: $%d\n"

.section .text
_start:
    mov x0, #9           // dΓ³lares por yardaΒ²
    mov x1, #836         // 1 ydΒ² = 0.83612736 mΒ², usamos 836 milΓ©simas
    mul x2, x0, x1       // precio total
    mov x3, #1000
    udiv x2, x2, x3

    ldr x0, =mensaje
    mov x1, x2
    bl printf

    mov x8, #93
    mov x0, #0
    svc #0

.extern printf

6.- Calcular e imprimir segundos que hay en una semana,tres semanas, un mes, un mes y 3 dias

.global _start
.section .data
mensaje: .asciz "Segundos en una semana: %d\n"
mensaje2: .asciz "Segundos en tres semanas: %d\n"
mensaje3: .asciz "Segundos en un mes (30 dΓ­as): %d\n"
mensaje4: .asciz "Segundos en un mes y tres dΓ­as: %d\n"

.section .text
_start:
    // Calcular y mostrar los segundos en una semana (7 dΓ­as)
    mov x0, #7                // dΓ­as en una semana
    mov x1, #24               // horas por dΓ­a
    mov x2, #60               // minutos por hora
    mov x3, #60               // segundos por minuto
    mul x4, x0, x1            // x4 = dΓ­as * horas
    mul x4, x4, x2            // x4 = dΓ­as * horas * minutos
    mul x4, x4, x3            // x4 = dΓ­as * horas * minutos * segundos (segundos en una semana)

    ldr x0, =mensaje
    mov x1, x4
    bl printf

    // Calcular y mostrar los segundos en tres semanas
    mov x0, #3                // semanas
    mul x4, x4, x0            // x4 = 3 * segundos en una semana

    ldr x0, =mensaje2
    mov x1, x4
    bl printf

    // Calcular y mostrar los segundos en un mes (30 dΓ­as)
    mov x0, #30               // dΓ­as en un mes
    mul x4, x4, x0            // x4 = dΓ­as en un mes * segundos en un dΓ­a

    ldr x0, =mensaje3
    mov x1, x4
    bl printf

    // Calcular y mostrar los segundos en un mes y tres dΓ­as (33 dΓ­as)
    mov x0, #33               // dΓ­as en un mes y tres dΓ­as
    mul x4, x4, x0            // x4 = dΓ­as * segundos en un dΓ­a

    ldr x0, =mensaje4
    mov x1, x4
    bl printf

    // Terminar el programa
    mov x8, #93
    mov x0, #0
    svc #0

.extern printf

7.- Calcular promedio de calificaciones

.global _start
.section .data
mensaje: .asciz "El promedio de las calificaciones de Nancy es: %.2f\n"

.section .text
_start:
    // Calificaciones: 95, 68, 92, 88
    mov x0, #95           // CalificaciΓ³n 1
    mov x1, #68           // CalificaciΓ³n 2
    mov x2, #92           // CalificaciΓ³n 3
    mov x3, #88           // CalificaciΓ³n 4

    // Sumar las calificaciones
    add x4, x0, x1        // x4 = 95 + 68
    add x4, x4, x2        // x4 = x4 + 92
    add x4, x4, x3        // x4 = x4 + 88 (total = 343)

    // Promediar (343 / 4 = 85.75)
    mov x5, #4            // NΓΊmero de pruebas
    udiv x6, x4, x5       // x6 = 343 / 4 (promedio entero)
    mov x0, x6            // El promedio en x0 para imprimirlo

    // Llamar a printf
    ldr x1, =mensaje      // Cargar la direcciΓ³n del mensaje
    bl printf             // Imprimir el promedio

    // Terminar el programa
    mov x8, #93
    mov x0, #0
    svc #0

.extern printf


8.- Expresar la longitud del marco si es 8 cm mΓ‘s largo que el doble de su anchura.

.global _start
.section .data
mensaje: .asciz "Longitud del marco: %d cm\n"

.section .text
_start:
    mov x0, #30          // ancho (W)
    lsl x1, x0, #1       // 2 * W
    add x1, x1, #8       // + 8 cm

    ldr x0, =mensaje
    mov x1, x1
    bl printf

    mov x8, #93
    mov x0, #0
    svc #0

.extern printf

9.- Convertir pesos de jugadores de libras a kilogramos.


.global _start
.section .data
mensaje: .asciz "Jugador %d: %d kg\n"
pesos: .quad 150, 180, 210, 175, 190

.section .text
_start:
    mov x19, #0               // Inicializar Γ­ndice
    ldr x20, =pesos           // DirecciΓ³n de la lista de pesos
    movz x21, #1000, lsl #16  // Cargar 1000000 en x21 (1000 << 16)
    movk x21, #0, lsl #0      // Completar x21 con la parte baja de 1000000

    movz x22, #2204, lsl #16  // Cargar 2204623 en x22 (2204 << 16)
    movk x22, #623, lsl #0    // Completar x22 con la parte baja de 2204623

loop:
    ldr x0, [x20, x19, lsl #3]  // Cargar el peso del jugador en x0
    mul x3, x0, x21             // x3 = peso * 1000000
    udiv x3, x3, x22            // x3 = x3 / 2204623 (convertir a kilogramos)

    ldr x0, =mensaje            // DirecciΓ³n del mensaje
    add x1, x19, #1             // Jugador nΓΊmero
    mov x2, x3                  // Peso en kilogramos
    bl printf                   // Llamar a printf para imprimir

    add x19, x19, #1            // Incrementar el Γ­ndice
    cmp x19, #5                 // Comparar con el nΓΊmero de jugadores (5)
    blt loop                    // Si hay mΓ‘s jugadores, continuar el loop

    mov x8, #93                 // Terminar el programa
    mov x0, #0
    svc #0

.extern printf


10.- Distancia Tierra-Marte en km y velocidad media del Mariner 9.

.global _start
.section .data
mensaje1: .asciz "Distancia: %d km\n"
mensaje2: .asciz "Velocidad media: %d km/h\n"

.section .text
_start:
    // Cargar el valor de 34900000 en x0
    movz x0, #34900, lsl #16  // Cargar la parte mΓ‘s significativa (34900 << 16)
    movk x0, #0, lsl #0       // Completar la parte baja (34900000)

    // Cargar el valor de 1609 en x1 (1 milla β‰ˆ 1609 metros)
    movz x1, #1609, lsl #0    // 1609 en x1

    // Multiplicar millas por 1609 para obtener metros
    mul x2, x0, x1

    // Dividir por 1000 para convertir metros a kilΓ³metros
    mov x3, #1000
    udiv x2, x2, x3

    // Imprimir la distancia
    ldr x0, =mensaje1
    mov x1, x2
    bl printf

    // Cargar el valor de 167 dΓ­as en x3
    mov x3, #167
    mov x4, #24
    mul x3, x3, x4            // Convertir dΓ­as a horas (167 * 24)

    // Calcular la velocidad media (distancia / tiempo)
    udiv x4, x2, x3           // Velocidad media = distancia / tiempo (km / horas)

    // Imprimir la velocidad media
    ldr x0, =mensaje2
    mov x1, x4
    bl printf

    // Terminar el programa
    mov x8, #93
    mov x0, #0
    svc #0

.extern printf