GNU/Linux xterm-256color bash 203 views

**
Nombre: oct.s
Autor: Karla Itzel Vázquez Cruz
Fecha: 08-04-2025
Descripción:
Plataforma: Raspberry Pi OS 64-bit
Asciinema: oct.s


Versión en C:

Versión en ARM64 RaspbianOS Linux:

.global _start

.section .bss
oct_buffer: .skip 16     // espacio para el número octal como texto
dec_buffer: .skip 16     // espacio para número decimal como texto

.section .text

_start:
    // ========================
    // Número decimal a convertir
    // ========================
    MOV X6, #93              // Cambia este número si quieres probar otro
    MOV X20, X6              // Guardamos copia del número

    // ========================
    // Mostrar mensaje base
    // ========================
    LDR X1, =msg1
    MOV X2, #8               // Longitud de "Decimal "
    MOV X0, #1
    MOV X8, #64
    SVC #0

    // ========================
    // Mostrar número decimal
    // ========================
    MOV X6, X20
    BL print_decimal

    // ========================
    // Mostrar texto " en octal es: "
    // ========================
    LDR X1, =msg2
    MOV X2, #17              // Longitud de " en octal es: "
    MOV X0, #1
    MOV X8, #64
    SVC #0

    // ========================
    // Mostrar número octal
    // ========================
    MOV X6, X20
    BL print_octal

    // ========================
    // Salto de línea
    // ========================
    LDR X1, =newline
    MOV X2, #1
    MOV X0, #1
    MOV X8, #64
    SVC #0

    // ========================
    // Terminar programa
    // ========================
    MOV X0, #0
    MOV X8, #93
    SVC #0

// ========================
// print_decimal (X6)
// ========================
print_decimal:
    ADR X7, dec_buffer
    ADD X7, X7, #15
    MOV X8, X6
    MOV X9, #0

dec_loop:
    MOV X10, #10
    UDIV X11, X8, X10
    MUL X12, X11, X10
    SUB X13, X8, X12
    ADD X13, X13, #'0'
    STRB W13, [X7], #-1
    MOV X8, X11
    ADD X9, X9, #1
    CBNZ X8, dec_loop

    ADD X1, X7, #1
    MOV X2, X9
    MOV X0, #1
    MOV X8, #64
    SVC #0
    RET

// ========================
// print_octal (X6)
// ========================
print_octal:
    ADR X7, oct_buffer
    ADD X7, X7, #15
    MOV X8, X6
    MOV X9, #0

oct_loop:
    MOV X10, #8
    UDIV X11, X8, X10
    MUL X12, X11, X10
    SUB X13, X8, X12
    ADD X13, X13, #'0'
    STRB W13, [X7], #-1
    MOV X8, X11
    ADD X9, X9, #1
    CBNZ X8, oct_loop

    ADD X1, X7, #1
    MOV X2, X9
    MOV X0, #1
    MOV X8, #64
    SVC #0
    RET

.section .rodata
msg1:    .asciz "Decimal "
msg2:    .asciz " en octal es: "
newline: .asciz "\n"

More recordings by Itzel

Browse all

CIRCULO 9 1:36

by Itzel

MULTIPLICAION 3:24

by Itzel

KELVIN A CELSIOUS 1:54

by Itzel

Carita Feliz 1:55

by Itzel