Código:
visualiza macro mensaje
mov ah, 09h
mov dx, offset mensaje
;lea dx, mensaje ; lea carga la direccion efectiva
int 21h
endm
capturateclado macro mensaje
local lazo1, lazo2, lazo4
lazo4: mov ah, 0Ah
lea dx, mensaje
int 21h
mov al, mensaje[2]
cmp al, 30h
jb lazo1
cmp al, 30h
jb lazo1
cmp al, 39h
jbe lazo2
lazo1: visualiza mensaje4
jmp lazo4
lazo2: nop
endm
termino macro
mov ah, 4ch
int 21h
endm
pila segment 'stack'
dw 64 dup (?)
pila ends
datos segment
mensaje1 DB "OPERACIONES ARITMETICAS::::",13,10
DB "INFORMATICA ::::", 13,10
DB "Ingrese un numero y presione ENTER", 13,10,"$"
mensaje2 DB 13,10,"Ingrese un segundo numero y presione ENTER",13,10,"$"
valor1 DB 2, 0, 0,0
valor2 DB 2, 0, 0,0
mensaje3 DB 13,10,"El resultado de la suma es: $"
mensaje4 DB 13,10,"Solo se permite un numero entre 0 y 9:",13,10," $"
respuesta DB 0,0,"$"
datos ends
codigo segment
assume cs:codigo,ds:datos,ss:pila
inicio: mov ax, datos
mov ds, ax
visualiza mensaje1
capturateclado valor1
visualiza mensaje2
capturateclado valor2
mov al, valor1[2]
sub al,30h
mov valor1[2],AL
mov al, valor2[2]
sub al,30h
mov valor2[2],AL
mov AH, 0
mov AL, valor1[2]
mov BL, valor2[2]
mul AL, BL ; no multiplica al ensamblarlo, y me marca un error en esta linea, y aparece una (,).
aam
add AH, 30h
add AL, 30h
mov respuesta[0], AH
mov respuesta[1], AL
visualiza respuesta
termino
codigo ends
end inicio