>> Tecnologia Eletrônica >  >> Áudio Residencial >> Amplificadores

Obtendo Input Usuário Em Assembly 8086 Para Operações Adição

Introdução ao Tratamento Input 8086 Assembly

Programando em assembly 8086, obter input usuário para operações aritméticas como adição requer usar interrupções DOS. Abordagem mais comum envolve interrupção 21h função 01h ler caractere único da entrada padrão, então converter caractere ASCII para equivalente numérico.

Exemplo Completo Programa Adição

Programa seguinte demonstra como solicitar dois números single-digit, somá-los, e exibir resultado:

.MODEL SMALL
.STACK 100H
.DATA
MSG DB 'Enter two numbers: $'
CRLF DB 0DH, 0AH, '$'
.CODE
MAIN PROC
; Initialize data segment
MOV AX, @DATA
MOV DS, AX
; Display prompt
MOV AH, 9
LEA DX, MSG
INT 21H
; Get first number
MOV AH, 1
INT 21H
SUB AL, 30H ; Convert ASCII to decimal
MOV BL, AL ; Store in BL
; Get second number
MOV AH, 1
INT 21H
SUB AL, 30H ; Convert ASCII to decimal
MOV BH, AL ; Store in BH
; Perform addition
ADD BL, BH ; BL = BL + BH
MOV AL, BL ; Move result to AL for display
; Display result
MOV AH, 2
MOV DL, AL
INT 21H
; New line
MOV AH, 9
LEA DX, CRLF
INT 21H
; Exit program
MOV AH, 4CH
INT 21H
MAIN ENDP
END MAIN

Conceitos-Chave Explicados

Funções Interrupção DOS 21h

  • Função 01h: Lê caractere entrada padrão com echo
  • Função 02h: Escreve caractere saída padrão
  • Função 09h: Exibe string terminada em $
  • Função 4Ch: Termina programa retorna ao DOS

Conversão ASCII

Caracteres numéricos '0'-'9' têm valores ASCII 30h-39h. Subtrair 30h converte código ASCII para valor numérico real (0-9). Conversão essencial antes operações aritméticas.

Uso Registradores

Programa usa registradores BL e BH para armazenar dois números input, então soma usando instrução ADD. Resultado permanece em BL, movido para AL para exibição via registrador DL.

Limitações e Extensões

Exemplo básico só lida números single-digit (0-9). Para input multi-dígito, precisaria implementar loop lendo caracteres até Enter pressionado, construindo número multiplicando valor acumulado por 10 e adicionando cada novo dígito.