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