Int 15h

De Wikipedia, la enciclopedia libre
(Redirigido desde «INT 15h»)

INT 15h es la forma abreviada de la interrupción 0x15. Esta interrupción controla los servicios extendidos del PC.

Características[editar]

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[editar]

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[editar]

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[editar]

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[editar]

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[editar]

  • 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[editar]

Enlaces externos[editar]