Escolar Documentos
Profissional Documentos
Cultura Documentos
model small
.stack 100h
.data
msg1 db 'digite o primeiro numero',10,13,'$'
msg2 db 'digite o segundo numero',10,13,'$'
msg3 db 'Digite 1 para somar ou digite 2 para subtrair',10,13,'$'
msg4 db 'O resultado e ',10,13,'$'
msg5 db 'resultado invalido',10,13,'$'
msg6 db ,10,13,'$'
msg7 db 'erro tente novamente',10,13,'$'
msg8 db '-','$'
.code
inicio:
mov ax,data
mov ds,ax
lea dx,msg1 ; mensagem digite o primeiro numero
mov ah,9
int 21h
mov ah,1 ; habilita o teclado para entrada do primeiro numero
int 21h
sub al,30h
mov bh,al ; salva primeiro numero em bh
lea dx,msg6 ; pula linha
mov ah,9
int 21h
lea dx,msg2 ; mensagem digite o segundo numero
mov ah,9
int 21h
mov ah,1 ; habilita o teclado para entrada segundo numero
int 21h
sub al,30h
mov bl,al ; salva segundo numero em bl
lea dx,msg6 ; pula linha
mov ah,9
int 21h
lea dx, msg3 ; mensagem sobre o que o usuario quer soma ou subtracao
mov ah,9
int 21h
mov ah,1 ; hibilita teclado para opcao do usuario
int 21h
sub al,30h
mov cl,al ; salva em cl
lea dx,msg6 ; pula linha
mov ah,9
int 21h
cmp cl,1
je soma
cmp cl,2
je subtracao
erro: lea dx,msg7
mov ah,9
int 21h
jmp inicio
soma: lea dx,msg6 ; pula linha
mov ah,9
int 21h
add bh,bl
cmp bh,9
jge erro
lea dx,msg4 ; pula linha
mov ah,9
int 21h
add bh,30h
mov dl,bh
mov ah,2
int 21h
mov ah,4ch
int 21h
subtracao: lea dx,msg6 ; pula linha
mov ah,9
int 21h
cmp bh,bl
jl negativo
lea dx,msg4 ; pula linha
mov ah,9
int 21h
sub bh,bl
add bh,30h
mov dl,bh
mov ah,2
int 21h
mov ah, 4ch
int 21h
negativo: sub bl,bh
add bl,30h
lea dx,msg4
mov ah,9
int 21h
lea dx,msg8
mov ah,9
int 21h
mov ah,2
mov dl,bl
int 21h
mov ah,4ch
int 21h
end