Int 15h
INT 15h es la forma abreviada de la interrupción 0x15. Esta interrupción controla los servicios extendidos del PC.
Características
Antiguamente, esta interrupción se encargaba únicamente de ofrecer acceso a las unidades de cinta, en la actualidad, tiene un amplio rango de funciones como control del joystick, control de APM (Advanced Power Management), establecer el modo de velocidad de la cpu, etc...
Lista de servicios de la INT 15h
AH = 00h | Unidad de cinta | Encender motor de la unidad de cinta |
AH = 01h | Unidad de cinta | Apagar motor de la unidad de cinta |
AH = 02h | Unidad de cinta | Leer datos |
AH = 03h | Unidad de cinta | Escribir datos |
AH = 21h | SISTEMA | Datos de informe de errores durante POST |
AH = 52h | Extensiones de INT 13h | Interceptar cuando el medio se expulse |
AH = 84h | Joystick | Funciones de Joystick |
AH = 85h | SISTEMA | Interceptar pulsación de la tecla PetSis |
AH = 86h | BIOS | Esperar intervalo de microsegundos |
AH = 87h | SISTEMA | Copiar memoria extendida |
AH = 88h | SISTEMA | Obtener tamaño de la memoria extendida |
AH = 89h | SISTEMA | Pasar a modo protegido |
AX = 2400h | SISTEMA | Desactivar línea A20 |
AX = 2401h | SISTEMA | Activar línea A20 |
AX = 5300h | APM | Comprobar instalación |
AX = 5301h | APM | Conectar interfaz de modo real |
AX = 5302h | APM | Conectar interfaz de 16 bits |
AX = 5303h | APM | Conectar interfaz de 32 bits |
AX = 5304h | APM | Desconectar interfaz |
AX = 5307h | APM | Establecer estado de energía |
AX = 5307h CX=0001h | APM | Pasar pc a modo STANBY |
AX = 5307h CX=0002h | APM | Suspender sistema |
AX = 5307h CX=0003h | APM | Apagar sistema |
AX = 5308h | APM | Activar/desactivar administración de energía |
AX = 5380h BH=04h | APM | Obtener tiempo de auto apagado |
AX = 5380h BH=05h | APM | Establecer tiempo de auto apagado |
AX = 5380h BH=0Ch | APM | Obtener modo de velocidad de CPU |
AX = 5380h BH=0Dh | APM | Establecer modo de velocidad de CPU |
AH = C1h | SISTEMA | Obtener inicio del segmento de datos de la BIOS extendida |
AX = C200h | Ratón PS/2 | Activar/Desactivar ratón |
AX = C201h | Ratón PS/2 | Reiniciar ratón |
AX = C202h | Ratón PS/2 | Establecer tasa de muestreo |
AX = C203h | Ratón PS/2 | Establecer resolución |
AX = C204h | Ratón PS/2 | Obtener tipo |
AX = C205h | Ratón PS/2 | Inicializar ratón |
AX = C206h | Ratón PS/2 | Comandos extendidos |
AX = C207h | Ratón PS/2 | Establecer dirección del driver del ratón |
AX = C208h | Ratón PS/2 | Escribir al puerto del ratón |
AX = C209h | Ratón PS/2 | Leer del puerto del ratón |
Tabla de funciones de Joystick
DH = 00h | Joystick | Lee los cuatro botones del joystick |
DH = 01h | Joystick | Lee la palanca |
DH = 02h | Joystick | Igual que 00h pero en valores de 0 a 255 |
DH = 03h | Joystick | Calibra el joystick |
DH = 04h | Joystick | Comprobar si el joystick está calibrado |
DH = 05h | Joystick | Lee un dato raw de la palanca |
DH = 08h | Joystick | Lee el botón especificado |
DH = 09h | Joystick | Lee todos los botones hasta el botón 16 |
DH = 80h | Joystick | Elimina el driver de la memoria |
DH = 81h | Joystick | Comprueba si el driver está en memoria |
INT 15h AH=00h - Encender motor de la unidad de cinta
Parámetros:
AH = 00h | Encender motor |
Retorna:
CF | Activada en error, limpia si no hay error |
AH = ?? | Código de error (86h = No hay casette) |
Ejemplo:
MOV AH,00h
INT 15h
JC error
;Si viene hasta aquí el motor está en marcha
error:
CMP AH,86h ;Comprobamos si AH=86h
JE no_hay_cinta
;Si viene hasta aquí hay un error
no_hay_cinta:
;Si viene hasta aquí no hay cinta dentro de la unidad
INT 15h AX=C207h - Establecer dirección del driver del ratón
Parámetros:
ES:BX | Dirección del controlador o 0000h:0000h para eliminar el driver |
Retorna:
CF | Activada en error, limpia si no hay error |
AH = ?? | Código de error (00h si la operación se completó con éxito) |
Ejemplo:
org 100h
;Este ejemplo inicia el ratón PS/2 y pone una O en pantalla cada vez que se mueve o se pulsa un botón
mov ax,0C207h ;Función de establecer la dirección del driver del ratón
mov bx,offset driver_mouse ;Cargamos en BX el offset del código del controlador del ratón
int 15h
mov ax,0C205h ;Inicializamos el ratón
mov bl,8 ;Utilizamos 8 bytes de datos en el ratón
int 15h
mov ax,0C200h ;Activamos el ratón
mov bh,01h ;Activamos el ratón (00h -> Para desactivarlo)
int 15h
int 20h ;Regresamos a MS-DOS
driver_mouse:
mov ah,0Eh ;Funcion de imprimir carácter en pantalla
mov al,'O' ;Imprimir una O
int 10h
retf ;Salimos del controlador
Notas
- En Windows XP no funciona la función 86h
- Las funciones de la unidad de cinta sólo funcionan en los IBM PC y PCjr originales
- Para activar el ratón PS/2, primero hay que establecer la dirección del driver por la función C207h, luego inicializarlo con la C205h y finalmente activarlo con la C200h
Véase también
Enlaces externos
Este artículo ha sido escrito por Wikipedia. El texto está disponible bajo la licencia Creative Commons - Atribución - CompartirIgual. Pueden aplicarse cláusulas adicionales a los archivos multimedia.