name: " LABORATORIO DE CLASE"
;Este programa realiza operaci5ones aritméticas (+, -, x, /) entre dos números
enteros positivos
org 100h ; inicio de programa
include '[Link]’; Incluye funciones de librería emu8086
DEFINE_SCAN_NUM
DEFINE_PRINT_STRING
DEFINE_PRINT_NUM
DEFINE_PRINT_NUM_UNS
jmp inicio ; salta a etiqueta inicio
menu1 db 13,10, '******MENU******',13,10,
db 13,10,'1 Suma de dos números ',13,10,
db 13,10,'2 Resta de dos números ' ,13,10,
db 13,10,'3 Multiplicación de dos números ',13,10,
db 13,10,'4 División de dos números',13,10,
db 13,10,'5 'Digite primer número',13,10,
db 13,10,'6 Si desea continuar y regresar al menú debe ingresar 1
' ,13,10,
db 13,10,'7 Sino desea continuar el programa puede Salir ' ,13,10,
db 13,10,13,10,' 'Digite el primero número: $'
texto2 db 13,10,13,10,'Digite el Segundo número: $'
texto3 db 13,10,13,10, 'La Suma Es: $'
texto4 db 13,10,'La Resta Es: $'
texto5 db 13,10,'La Multiplicación Es: $'
texto6 db 13,10,'La División es: $'
texto9 db 13,10,'cero: $'
num1 dw ? ;defino variables de 2 bytes
num2 dw ? ; el símbolo ? es para indicar q no se inicializan con valor alguno
inicio:
mov ah,09 ;instrucción para imprimir en pantalla
lea dx,texto ;carga cadena de texto 1 en dx
int 21h ;interrupción pantalla
call SCAN_NUM ;Llama Función SCAN_NUM que toma número de teclado; el valor se
guarda en ax
mov num1,cx ;mueve número a variable num1
mov ah,09 ;interrupción para imprimir en pantalla
lea dx,texto2 ;carga cadena de texto 2 en dx
int 21h
call SCAN_NUM ;Llama Función SCAN_NUM que toma número de teclado; el valor se
guarda en ax
mov num2,cx ;mueve número a variable num2
mov ah,09
lea dx,texto3
int 21h
mov ax,num1 ;mueve primer número digitado a ax
add ax,num2 ;suma los número s digitado, queda almacenado en ax
call PRINT_NUM
mov ah,09
lea dx,texto4
int 21h
mov ax,num1 ;mueve primer número digitado a ax
sub ax,num2 ;resta el 2do del 1er número , queda almacenado en ax
call PRINT_NUM
mov ah,09
lea dx,texto5
int 21h
mov ax,num1 ;mueve primer número digitado a ax
mov bx,num2 ;mueve segundo número digitado a bx
mul bx ;ax = ax*bx
call PRINT_NUM
mov ah,09
lea dx,texto6
int 21h
xor dx,dx ;deja en cero dx; si no lo hago se desborda la división
;DX ALMACENA EL módulo de la división, por eso hay q dejarlo en cero
mov ax,num1 ;mueve primer número digitado a ax
mov bx,num2 ;mueve segundo número digitado a bx
div bx ;ax = ax*bx
call PRINT_NUM
ret
; FIN DE PROGRAMA O DESEA REGRESAR AL MENÚ Y VUELTA AL DOS
MOV AX, 4C00H ;Salir a DOS
INT 21h;
END INICIO
END
;FIN DEL PROGRAMA DE CODIGO
CODE ENDS
;FIN DE PROGRAMA INDICANDO DONDE COMIENZA LA EJECUCIÓN
END START
texto db 13,10,'Jimmy Francisco Guidos Sánchez',13,10,
db 13,10,'Carné 0494 10 10398',13,10,
db 13,10,'Universidad Mariano Gálvez de Guatemala',13,10,
db 13,10,'Fecha: abril 24 de 2023',13,10,