Tabla de Funciones de Interrupción de Video (INT 10H)
Función | Código de función | Parámetros | Retorno |
Activa Modo de video | AH=00h | AL = Modo de video | AL = Bandera del Modo de video / byte del modo del controlador de CRT |
Asigna forma del cursor de modo de texto | AH=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 cursor | AH = 02h | BH = Página, DH = Fila, DL = Columna | |
Lee la posición del cursor y su tamaño | AH = 03h | BH = Página | AX = 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 = 04h | AH = 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 pantalla | AH = 05h | AL = Número de Página | |
Scroll up window | AH = 06h | AL = Líneas de scroll (0 = Borra), BH = Atributo de las líneas en blanco | |
Scroll down window | AH = 07h | AL = Líneas de scroll (0 = Borra), BH = Atributo de las líneas en blanco | |
Lee carácter y atributo en la posición del cursor | AH = 08h | BH = Número de Página | AH = Color, AL = Carácter |
Escribe carácter y atributo en la posición del cursor | AH = 09h | AL = 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 cursor | AH = 0Ah | AL = Carácter, BH = Número de Página, BL = Color, CX = Número de veces para escribir el carácter | |
Asigna color de fondo/borde | AH = 0Bh, BH = 00h | BL = Color del fondo/borde (el borde solo en modos de texto) | |
Asigna paleta | AH = 0Bh, BH = 01h | BL = 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áfico | AH = 0Ch | AL = Color, BH = Página, CX = X, DX = Y | |
Lee pixel gráfico | AH = 0Dh | BH = Página, CX = X, DX = Y | AL = Color |
Salida de teletipo | AH = 0Eh | AL = Carácter, BL = Color (solo en modo gráfico) | |
Lee modo de video actual | AH = 0Fh | AL = Modo de video | |
Escribe string (EGA+, lo que significa como mínimo un PC AT) | AH = 13h | AL = 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