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 = 00hUnidad de cintaEncender motor de la unidad de cinta
AH = 01hUnidad de cintaApagar motor de la unidad de cinta
AH = 02hUnidad de cintaLeer datos
AH = 03hUnidad de cintaEscribir datos
AH = 21hSISTEMADatos de informe de errores durante POST
AH = 52hExtensiones de INT 13hInterceptar cuando el medio se expulse
AH = 84hJoystickFunciones de Joystick
AH = 85hSISTEMAInterceptar pulsación de la tecla PetSis
AH = 86hBIOSEsperar intervalo de microsegundos
AH = 87hSISTEMACopiar memoria extendida
AH = 88hSISTEMAObtener tamaño de la memoria extendida
AH = 89hSISTEMAPasar a modo protegido
AX = 2400hSISTEMADesactivar línea A20
AX = 2401hSISTEMAActivar línea A20
AX = 5300hAPMComprobar instalación
AX = 5301hAPMConectar interfaz de modo real
AX = 5302hAPMConectar interfaz de 16 bits
AX = 5303hAPMConectar interfaz de 32 bits
AX = 5304hAPMDesconectar interfaz
AX = 5307hAPMEstablecer estado de energía
AX = 5307h CX=0001hAPMPasar pc a modo STANBY
AX = 5307h CX=0002hAPMSuspender sistema
AX = 5307h CX=0003hAPMApagar sistema
AX = 5308hAPMActivar/desactivar administración de energía
AX = 5380h BH=04hAPMObtener tiempo de auto apagado
AX = 5380h BH=05hAPMEstablecer tiempo de auto apagado
AX = 5380h BH=0ChAPMObtener modo de velocidad de CPU
AX = 5380h BH=0DhAPMEstablecer modo de velocidad de CPU
AH = C1hSISTEMAObtener inicio del segmento de datos de la BIOS extendida
AX = C200hRatón PS/2Activar/Desactivar ratón
AX = C201hRatón PS/2Reiniciar ratón
AX = C202hRatón PS/2Establecer tasa de muestreo
AX = C203hRatón PS/2Establecer resolución
AX = C204hRatón PS/2Obtener tipo
AX = C205hRatón PS/2Inicializar ratón
AX = C206hRatón PS/2Comandos extendidos
AX = C207hRatón PS/2Establecer dirección del driver del ratón
AX = C208hRatón PS/2Escribir al puerto del ratón
AX = C209hRatón PS/2Leer del puerto del ratón

Tabla de funciones de Joystick

DH = 00hJoystickLee los cuatro botones del joystick
DH = 01hJoystickLee la palanca
DH = 02hJoystickIgual que 00h pero en valores de 0 a 255
DH = 03hJoystickCalibra el joystick
DH = 04hJoystickComprobar si el joystick está calibrado
DH = 05hJoystickLee un dato raw de la palanca
DH = 08hJoystickLee el botón especificado
DH = 09hJoystickLee todos los botones hasta el botón 16
DH = 80hJoystickElimina el driver de la memoria
DH = 81hJoystickComprueba si el driver está en memoria

INT 15h AH=00h - Encender motor de la unidad de cinta

Parámetros:

AH = 00hEncender motor

Retorna:

CFActivada 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:BXDirección del controlador o 0000h:0000h para eliminar el driver

Retorna:

CFActivada 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.