Professional Documents
Culture Documents
ARQUITECTURA DE COMPUTADORES
TUTOR:
ANGELO GERLEY QUINTERO
PRESENTADO POR:
OSCAR JAVIER DELGADO Código: 80217860
CAMILO ANDRES DORADO Código:
JAIME ALEJANDRO TIRANO Código: 80243722
WILSON ESTEBAN PINTO Código: 80208473
301302_36
INGENIERIA DE SISTEMAS
CEAD JOSE ACEVEDO Y GOMEZ
BOGOTA D.C MAYO DE 2017
INTRODUCCION
MENÚ
1. Datos del autor
2. Suma de dos números
3. Resta de dos números
4. Multiplicación de dos números
5. División de dos números
6. Validar si un número es positivo o negativo
7. Salir
name "---Menu----"
include 'emu8086.inc'
org 100h
.data
Suma db 2 dup (?)
Resta db 2 dup (?)
multi db 2 dup (?)
divis db 2 dup (?)
var1 db 0
var2 db 0
.code
jmp inicio
; define variables:
inicio:
jmp leer_op
leer_op:
mov ah,8h
int 21h
cmp al,31h
je autor
cmp al,32h
je sumar
cmp al,33h
je restar
cmp al,34h
je multiplicar
cmp al,35h
je dividir
cmp al,36h
je autor
cmp al,37h
je autor
jne leer_op
autor:
sumar proc
printn "Digitar el primer numero ==>"
call scan_num
mov suma[0],cl
printn ""
printn "Digitar el segundo numero ==>"
call scan_num
mov suma[1],cl
sub ax,ax
add al,suma[0]
add al,suma[1]
printn ""
printn "El resultado es: "
call print_num
call inicio
sumar endp
restar proc
printn "Digitar el primer numero ==>"
call scan_num
mov resta[0],cl
printn ""
printn "Digitar el segundo numero ==>"
call scan_num
mov resta[1],cl
xor ax,ax
add al,resta[0]
sub al,resta[1]
printn ""
printn "El resultado es: "
call print_num
call inicio
restar endp
multiplicar proc
printn "Digitar el primer numero ==>"
call scan_num
mov multi[0],cl
printn ""
printn "Digitar el segundo numero ==>"
call scan_num
mov multi[1],cl
xor ax,ax
add al,multi[0]
mul multi[1]
printn ""
printn "El resultado es: "
call print_num
call inicio
multiplicar endp
dividir proc
printn "Digitar el primer numero ==>"
call scan_num
mov divis[0],cl
printn ""
printn "Digitar el segundo numero ==>"
call scan_num
mov divis[1],cl
xor ax,ax
add al,divis[0]
div divis[1]
printn ""
printn "El resultado es: "
call print_num
call inicio
dividir endp
deter proc
mov ah,01h
int 21h
sub al,30h
mov var1,al
int 21h
sub al,30h
mov ah,var1
mov bl,var1
cmp bl,var2
JC pos
JL nega
JE igu
pos:
mov ah,09h
lea dx,msg2
int 21h
jmp inicio
nega:
mov ah,09h
lea dx,msg4
int 21h
jmp inicio
igu:
mov ah,09h
lea dx,msg5
int 21h
jmp inicio
deter endp
proc far
mov ax, @data
mov ds,ax
mov ah, 00
mov dx, 03h
int 10h
mov ah,09h
lea dx, msg1
int 21h
mov ah,01h
int 21h
sub al,30h
mov var1,al
int 21h
sub al,30h
mov ah,var1
mov bl,var1
cmp bl,var2
;salto de etiquetas
JG positivo
JL negativo
JE igual
;etiquetas
positivo:
mov ah,09h
lea dx,msg2
int 21h
jmp exit
negativo:
mov ah,09h
lea dx,msg3
int 21h
jmp exit
igual:
mov ah,09h
lea dx,msg4
int 21h
jmp exit
exit:
mov ax, 4c00h
int 21h
define_print_string
define_print_num
define_print_num_uns
define_scan_num
salir:
int 21h
end
CONCLUSIONES