Funciones de Interrupción BIOS y DOS: Códigos y Ejemplos

Tabla de Funciones de Interrupción de Video (INT 10H)

FunciónCódigo de funciónParámetrosRetorno
Activa Modo de videoAH=00hAL = Modo de videoAL = Bandera del Modo de video / byte del modo del controlador de CRT
Asigna forma del cursor de modo de textoAH=01h

CH = Fila inicial de scan, CL = Fila final de scan

Normalmente una celda de carácter tiene 8 líneas de scan, 0-7. Así, CX=0607h es el cursor normal de subrayado, CX=0007h es un cursor de bloque completo. Si el bit 7 de CH es activado, esto usualmente significa «Oculta el cursor». Así CX=2607h es un cursor invisible.

Algunas tarjetas de video tienen 16 líneas de scan, 00h-0Fh. Algunas tarjetas de video no usan el bit 5 de CH. Con éstas, haga Inicio > Fin (ej. CX=0706h)

Asigna posición del cursorAH = 02hBH = Página, DH = Fila, DL = Columna
Lee la posición del cursor y su tamañoAH = 03hBH = PáginaAX = 0, CH = Inicio de la línea de scan, CL = Fin de la línea de scan, DH = Fila, DL = Columna
Lee la posición del light pen (No funciona en sistemas VGA)AH = 04hAH = Status (0=no disparado, 1=disparado), BX = Pixel X, CH = Pixel Y, CX = número de línea del pixel para los modos 0Fh-10h, DH = Carácter Y, DL = Carácter X
Selecciona Página activa de la pantallaAH = 05hAL = Número de Página
Scroll up windowAH = 06hAL = Líneas de scroll (0 = Borra), BH = Atributo de las líneas en blanco
Scroll down windowAH = 07hAL = Líneas de scroll (0 = Borra), BH = Atributo de las líneas en blanco
Lee carácter y atributo en la posición del cursorAH = 08hBH = Número de PáginaAH = Color, AL = Carácter
Escribe carácter y atributo en la posición del cursorAH = 09hAL = Carácter, BH = Número de Página, BL = Color, CX = Número de veces para escribir el carácter
Escribe carácter solo en la posición del cursorAH = 0AhAL = Carácter, BH = Número de Página, BL = Color, CX = Número de veces para escribir el carácter
Asigna color de fondo/bordeAH = 0Bh, BH = 00hBL = Color del fondo/borde (el borde solo en modos de texto)
Asigna paletaAH = 0Bh, BH = 01hBL = ID de Paleta (solo fue válido en el CGA, pero las nuevas tarjetas lo soportan en muchos o todos los modos gráficos)
Escribe pixel gráficoAH = 0ChAL = Color, BH = Página, CX = X, DX = Y
Lee pixel gráficoAH = 0DhBH = Página, CX = X, DX = YAL = Color
Salida de teletipoAH = 0EhAL = Carácter, BL = Color (solo en modo gráfico)
Lee modo de video actualAH = 0FhAL = Modo de video
Escribe string (EGA+, lo que significa como mínimo un PC AT)AH = 13hAL = Modo de escritura, BH = Página, BL = Color, CX = Longitud del string, DH = Fila, DL = Columna, ES:BP = Posición del string

Funciones de Interrupción de DOS (INT 21H)

Finalizar Programa

  • Código: INT 21H AX = 4C00H
  • Descripción: Esta rutina finalizará el programa y devolverá el control al DOS. Debe llamar a esta rutina para finalizar los programas.
  • Uso:
    • Entrada: AX = 4C00H
    • Salida: Ninguna
    • Registros afectados: Ninguno

Estado del Teclado

  • Código: INT 21H AH = 0BH
  • Descripción: La función de esta rutina es detectar si se ha pulsado una tecla.
  • Uso:
    • Entrada: AH = 0BH
    • Salida: AL = FF si carácter disponible; AL = 0 si carácter no disponible
    • Registros afectados: AL

Entrada de un Carácter desde Teclado

  • Código: INT 21H AH = 8H
  • Descripción: La función de esta rutina es esperar un carácter del teclado sin escribirlo por pantalla y almacenarlo en el registro AL en forma de código ASCII.
  • Uso:
    • Entrada: AH = 8H
    • Salida: AL = carácter ASCII de la tecla pulsada
    • Registros afectados: AL

Leer una Línea de Programa

  • Código: INT 21H AH = 0AH
  • Descripción: La función de esta rutina es la de obtener una línea de datos del teclado (que finaliza al pulsar el retorno de carro) y almacenarlos en un área de memoria. Los caracteres son mostrados en la pantalla al ser tecleados.
  • Uso:
    • Entrada: AH = 0AH; DS contiene la dirección del segmento de memoria en el cual se almacenan los datos; DX contiene la dirección del offset de la zona de memoria del segmento anterior en la que se almacenan los datos. En el primer byte del área debe indicarse el máximo número de caracteres a introducir sin superar 255.
    • Salida: Ninguna en registro. En el segundo byte del área se almacena el número de caracteres tecleados sin contar el retorno de carro.
    • Registros afectados: Ninguno

Salida de un Carácter por Pantalla

  • Código: INT 21H AH = 2H
  • Descripción: La función de esta rutina es visualizar un carácter.
  • Uso:
    • Entrada: AH = 2H; DL contiene el código ASCII del carácter a visualizar.
    • Salida: Ninguna
    • Registros afectados: Ninguno

Sacar un String a la Pantalla

  • Código: INT 21H AH = 9H
  • Descripción: Su función es la de sacar una cadena de caracteres ASCII por pantalla.
  • Uso:
    • Entrada: AH = 9H; DS contiene el valor de la dirección del segmento del comienzo de la cadena de caracteres a sacar. DX contiene el offset de dicha cadena en el segmento anterior. El último byte de la cadena de caracteres debe ser el carácter $, que no se muestra en pantalla.
    • Salida: Ninguna
    • Registros afectados: AX

Establecer Nuevo Vector de Interrupción

  • Código: INT 21H AX = 25H
  • Descripción: Esta rutina establece un nuevo vector de interrupción.
  • Uso:
    • Entrada: DS:DX Dirección de la rutina de servicio; AL: Número de la interrupción
    • Salida: Actualización de la tabla de vectores
    • Registros afectados: Ninguno

Obtiene Número de Interrupción

  • Código: INT 21H AX = 35H
  • Descripción: Esta rutina devuelve el vector de interrupción del número de interrupción que se especifique en AL.
  • Uso:
    • Entrada: AL Número de la interrupción
    • Salida: ES:BX Vector de la interrupción
    • Registros afectados: Ninguno

Funciones Adicionales de INT 10H

Posicionar el Cursor

  • Código: INT 10H AH = 02H
  • Entrada: DH = fila (0-24); DL = columna (0-79); BH = número de página

Escribir un Carácter en Pantalla, donde está el Cursor

  • Código: INT 10H AH = 0AH
  • Entradas: BH = número de página; AL = carácter a escribir

Leer Carácter y Atributo de la Posición Actual del Cursor

  • Código: INT 10H AH = 08H
  • Entradas: BH = número de página
  • Salidas: AL = carácter leído; AH = atributo del carácter leído

Escribir Carácter y Atributo en la Posición Actual del Cursor

  • Código: INT 10H AH = 09H
  • Entradas: BH = número de página; BL = atributo del carácter; CX = número de caracteres a escribir; AL = carácter a escribir

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *

Este sitio usa Akismet para reducir el spam. Aprende cómo se procesan los datos de tus comentarios.