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.
- ·Especificaciones del tubo de vacío 6K6 y variantes (6K6G)
- ·Interbloqueo de encendido por alcohol en aliento (BAIID) y encendido MSD: Soluciones de compatibilidad
- ·Cómo conectar una caja de inyección directa (DI)
- ·Instrucciones para un amplificador de estado sólido HF de radioaficionado
- ·Retroalimentación Negativa en Amplificadores: Práctica Estándar, No Definición
- ·Contadores y retardos temporales en microprocesador 8085: Guía programación
- ·Cálculo de la Carga Total de Iluminación en Volt-Amperes (VA)
- ·Amplificador de 4 canales vs 2 canales
- Lanzamiento del IBM PC AT (Intel 80286): Agosto 1984
- Cableado del amplificador Alpine MRP-F300 de 4 canales: Potencia, tierra y seguridad
- Cómo aumentar la ganancia de un amplificador Push-Pull
- Conversión de 9.41 kVA a kW: por qué necesitas el factor de potencia
- Por qué la realimentación es el alma de los circuitos con amplificadores operacionales
- Cómo cambiar los tubos de potencia
