Está en la página 1de 3

name: " LABORATORIO DE CLASE"

;Este programa realiza operaci5ones aritméticas (+, -, x, /) entre dos números


enteros positivos

org 100h ; inicio de programa

include 'emu8086.inc’; 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,

También podría gustarte