Sección A
Manuela Técnico
La aplicación está escrita en código ensamblador Microsoft Macro Assembler (MASM) que es un
ensamblador de la familia x86, creado por Microsoft para el desarrollo del sistema operativos MS-
DOS.
La aplicación permite cargar archivos con extensión .arq que contengan hasta 20 números de dos
dígitos, separados por espacios y con signos aritméticos intercalados entre sí, para poder realizar
el cálculo aritmético de estos datos, mostrar la operación en notación postfija e infija. También
posee un módulo tipo calculadora que permite realizar cálculos aritméticos de dos números de
dos cifras. Por otra parte, posee un módulo para calcular la operación factorial de un rango de
números, que va del 0 al 8. La aplicación posee una sección de reportes que escribe en un archivo
de texto plano las operaciones realizadas durante su ejecución.
Secciones de código:
- Código relevante
Se utilizó la macro “imprime” para imprimir en consola toda la información necesaria para que el
usuario pueda interactuar con la aplicación
mov ax,@data
mov ds,ax
mov ah,09
int 21h
endm
También se realizó la macro “clear” que tiene la función de limpiar la pantalla. Facilitando así la
visualización de la aplicación.
clear macro
Int 10H
endm
Este módulo solicita dos números y un operador aritmético, según el carácter, se realiza un salto
hacia el segmento de código que corresponda a la operación aritmética que debe realizarse.
calc:
mov bl,00H
mov al,00h
imprime ope1
mov ah,0dh
int 21h
mov ah,01h
int 21h
je var
sub al,30h
add bl, al
Mov numero1, al
mov ah,01h
int 21h
cmp al,0dh
je siguiente
mov numero2, al
mov cl,09h
mov al,numero1
mul cl
add bl,al
add bl,numero2
mov numero1, bl
mov ah,01h
int 21h
resultado:
cmp signo,"+"
je sum
cmp signo,"-"
je resa
cmp signo,"*"
je multi
cmp signo,"/"
call divi
Este segmento de código realiza la suma de los bits de cada registro almacenados en las variables
numero1 y numero2, para ello se mueven las variables a los registros cl y al, se realiza la suma con
la instrucción add y se envía hacia la variable resulta, posteriormente se imprime la respuesta y se
pregunta si se desea realizar otra operación.
sum:
mov cl,numero3
mov al,numero1
add al,cl
mov result,al
aam
mov bx,ax
imprime res
mov ah,02h
int 21h
mov ah,02h
mov dl,bh
add dl,30h
int 21h
mov dl,bl
add dl,30h
int 21h
jmp app
para el cálculo de factorial, solicitamos un número y se verifica que no exceda el limite (8) y si no
lo excede se procede a llamar a la función factorial que realiza recursivamente el cálculo de este.
facto:
mov resu,1
imprime Mensaje
mov si,dx
mov ah,0ah
int 21h
sub ch,ch
mov cl,[si+2]
sub cl,"0"
cmp cl,9
je Errornum
cmp cl,0
je cero
xor al,al
mov al, cl
call factorial
mov cx,0
mov ax,resu
cmp cx,1
je Fn
Push cx
dec cx
call factorial
mov ax,resu
pop cx
mul cx
mov resu,ax
Fn:
ret
factorial endp
Se utilizaron las interrupciones 21h para la lectura de caracteres de entrada y la interrupción 10h
en la macro para limpiar la pantalla.