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