Você está na página 1de 3

.

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

Você também pode gostar