Página 1 de 1

Ensamblador Calculaodra de Area de un Circulo

Publicado: Mar, 24 Mar 2026, 22:30
por h0ax
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


Re: Ensamblador Calculaodra de Area de un Circulo

Publicado: Mié, 25 Mar 2026, 00:37
por Hellsing
Mano vas a fundir a uno con ensamblador tira algo más fácil jajaja