Obtener Entrada Usuario en Ensamblador 8086 para Operaciones Suma

Introducción Manejo Entrada Ensamblador 8086

Programando en ensamblador 8086, obtener entrada usuario para operaciones aritméticas como suma requiere usar interrupciones DOS. Enfoque más común usa interrupción 21h función 01h leer carácter entrada estándar, luego convertir ASCII a valor numérico.

Programa Completo Ejemplo Suma

Siguiente programa demuestra solicitar dos números un dígito, sumarlos, y mostrar resultado:

.MODEL SMALL .STACK 100H .DATA MSG DB 'Enter two numbers: $' CRLF DB 0DH, 0AH, '$' .CODE MAIN PROC ; Inicializar segmento datos MOV AX, @DATA MOV DS, AX ; Mostrar prompt MOV AH, 9 LEA DX, MSG INT 21H ; Obtener primer número MOV AH, 1 INT 21H SUB AL, 30H ; Convertir ASCII a decimal MOV BL, AL ; Guardar en BL ; Obtener segundo número MOV AH, 1 INT 21H SUB AL, 30H ; Convertir ASCII a decimal MOV BH, AL ; Guardar en BH ; Realizar suma ADD BL, BH ; BL = BL + BH MOV AL, BL ; Mover resultado a AL para mostrar ; Mostrar resultado MOV AH, 2 MOV DL, AL INT 21H ; Nueva línea MOV AH, 9 LEA DX, CRLF INT 21H ; Salir programa MOV AH, 4CH INT 21H MAIN ENDP END MAIN 

Conceptos Clave Explicados

Funciones Interrupción DOS 21h

  • Función 01h: Lee carácter entrada estándar con eco
  • Función 02h: Escribe carácter salida estándar
  • Función 09h: Muestra string terminado en $
  • Función 4Ch: Termina programa y retorna a DOS

Conversión ASCII

Caracteres numéricos '0'-'9' tienen valores ASCII 30h-39h. Restar 30h convierte código ASCII a valor numérico real (0-9). Conversión esencial antes operaciones aritméticas.

Uso Registros

Programa usa registros BL y BH almacenar dos números entrada, luego suma con instrucción ADD. Resultado queda en BL, movido a AL para mostrar vía registro DL.

Limitaciones y Extensiones

Ejemplo básico solo maneja números un dígito (0-9). Para entrada multi-dígito, necesitarías bucle leyendo caracteres hasta Enter, construyendo número multiplicando valor acumulado por 10 y sumando cada dígito nuevo.