Nuestro xNova HackCuba siempre esta disponible para todos aquellos que quieran jugar https://xnova.hackcuba.net
En foro solo se deja sobre el Proyecto BlackHat los codigos, tips y guias menos importantes todo lo principal se encuentra en nuestra web principal https://hackcuba.net

Ensamblador Calculaodra de Area de un Circulo

Responder
Avatar de Usuario
h0ax Verified
Administrador del Sitio
Mensajes: 72
Registrado: Dom, 01 Mar 2026, 16:33
Contactar:

Ensamblador Calculaodra de Area de un Circulo

Mensaje por h0ax Verified »

Aquí tienes un ejemplo funcional de una calculadora de área de círculo escrita en lenguaje ensamblador para arquitectura x86 (8086/DOSBox), utilizando el ensamblador MASM/TASM.
Este programa utiliza aritmética de punto fijo sencilla para manejar el valor de y solicita el radio por consola.

Código: Seleccionar todo

;-------------------------------------------------------------------------
; Calculadora de Área de Círculo en Ensamblador 8086
; Área = 3.1416 * radio * radio
;-------------------------------------------------------------------------
.model small
.stack 100h

.data
    msg1 db 0Dh,0Ah,'Ingrese el radio (entero): $'
    msg2 db 0Dh,0Ah,'El area aproximada es: $'
    res  dw 0
    radio dw 0
    pi_x_1000 dw 31416 ; Pi multiplicado por 10000 para precision
    
.code
main proc
    mov ax, @data
    mov ds, ax

    ; 1. Solicitar el radio
    mov ah, 09h
    lea dx, msg1
    int 21h

    ; 2. Leer el radio (simple, un solo digito por simplicidad, 0-9)
    mov ah, 01h
    int 21h
    sub al, 30h ; Convertir ASCII a numero
    mov ah, 0
    mov radio, ax

    ; 3. Calcular area: radio * radio * 31416
    mov ax, radio
    mul radio      ; ax = radio^2
    mov dx, pi_x_1000
    mul dx         ; ax = radio^2 * 31416
    
    ; Como multiplicamos por 31416 (pi * 10000), 
    ; debemos dividir entre 10000 para obtener el area real.
    ; Para simplicidad en este ejemplo, no se muestra decimales, 
    ; solo la parte entera (dividiendo por 10000).
    mov cx, 10000
    div cx
    mov res, ax    ; Resultado final entero

    ; 4. Mostrar resultado
    mov ah, 09h
    lea dx, msg2
    int 21h

    ; Convertir numero a ASCII y mostrar
    mov ax, res
    call imprimir_numero

    ; 5. Salir
    mov ah, 4Ch
    int 21h
main endp

;-------------------------------------------------------------------------
; Procedimiento para imprimir un numero en AX
;-------------------------------------------------------------------------
imprimir_numero proc
    push ax
    push bx
    push cx
    push dx
    
    mov cx, 0
    mov bx, 10
    
loop1:
    mov dx, 0
    div bx
    push dx
    inc cx
    cmp ax, 0
    jne loop1
    
loop2:
    pop dx
    add dl, 30h
    mov ah, 02h
    int 21h
    loop loop2
    
    pop dx
    pop cx
    pop bx
    pop ax
    ret
imprimir_numero endp

end main

La lógica es el lenguaje del universo, el código es su traducción.
Avatar de Usuario
Hellsing
Mensajes: 21
Registrado: Dom, 01 Mar 2026, 17:17

Re: Ensamblador Calculaodra de Area de un Circulo

Mensaje por Hellsing »

Mano vas a fundir a uno con ensamblador tira algo más fácil jajaja
Responder