Int 13h

Int 13h

INT 13h es la forma abreviada de la interrupción 0x13. Esta interrupción se encarga de las operaciones típicas de acceso a los discos duros y a los disquetes.

Contenido

Características

Los sistemas operativos de modo real como MS-DOS llaman a esta interrupción para operaciones de disco y de disquete. Las aplicaciones de MS-DOS llaman a la interrupción INT 21h para acceso al disco en vez de la interrupción INT 13h.

Los nuevos sistemas operativos como Microsoft Windows NT y sus derivados (ej. NT 4.0, XP y server 2003) o linux interceptan la llamada a esta interrupción y se la pasan a sus mecanismos nativos de acceso al disco o disquete. Windows 9x y Windows 3.x también hacen esto cuando utilizan el modo de acceso a archivos de 32 bits.

La rutina original de la interrupción soporta discos de 504 MB o más grandes hasta un límite de 8 GiB por que utiliza el modo de acceso CHS, para romper esta barrera, se crearon las extensiones de la INT 13h que utilizan el modo LBA (direcciones de 64-bits) para acceder al disco, soportando así hasta 8 ZiB de espacio (También se puede usar modos LBA de 32-bits o 48-bits que soportan 2 TiB o 128 PiB respectivamente).

Lista de servicios de la INT 13h

Tabla de unidades

DL = 00h Primera disquetera (Unidad "A:")
DL = 01h Segunda disquetera (Unidad "B:")
DL = 80h Primer disco duro
DL = 81h Segundo disco duro
DL = FFh Último disco duro soportado por la BIOS

Tabla de estado

AH = 00h La operación finalizó sin problemas
AH = 01h Función invalida en AH o parámetro no válido
AH = 02h Marca de dirección no encontrada
AH = 03h El disco esta protegido contra la escritura
AH = 04h Sector no encontrado o error de lectura
AH = 05h Los datos no se verificaron correctamente
AH = 06h Disco cambiado (Disquetera)
AH = 07h Actividad de parámetros de disco fallada (disco duro)
AH = 08h Desborde de DMA
AH = 09h Error de límite de datos (Se intentó DMA sobrepasando los 64 KB)
AH = 0Ah Detectado sector dañado
AH = 0Bh Detectado cilindro dañado
AH = 0Ch Cilindro insoportado o medio invalido
AH = 0Dh Número invalido de sectores en formateo (disco duro PS/2)
AH = 0Eh Control de marca de datos detectado
AH = 0Fh Nivel de arbitración de DMA fuera de rango
AH = 10h Error incorregible de CRC o ECC
AH = 11h Datos ECC coregidos
AH = 20h Error de controlador
AH = 31h No hay medio en unidad
AH = 32h Tipo de unidad incorrecta guardada en CMOS (Compaq)
AH = 40h Fallo seek
AH = 80h Fuera de tiempo (no esta listo)
AH = AAh Unidad no preparada
AH = B0h Volumen no bloqueado en unidad (INT 13h EXT)
AH = B1h Volumen bloqueado en unidad (INT 13h EXT)
AH = B2h Volumen no eliminable (INT 13h EXT)
AH = B3h Volumen en uso (INT 13h EXT)
AH = B4h Cuenta de bloqueo exedida (INT 13h EXT)
AH = B5h Petición de expulsión valida fallida (INT 13h EXT)
AH = B6h Volumen presente pero protegido contra escritura (INT 13h EXT)
AH = BBh Error indefinido
AH = CCh Escritura fallida
AH = E0h Error de estado de registro
AH = FFh Operación sense fallida

Servicios

AH = 00h TODOS Reiniciar controlador de disco
AH = 01h TODOS Comprobar estado de la unidad
AH = 02h TODOS Leer sectores
AH = 03h TODOS Escribir sectores
AH = 04h TODOS Verificar sectores
AH = 05h TODOS Formatear cilindro (formateo a bajo nivel)
AH = 08h TODOS Leer parámetros de unidad
AH = 09h HD Iniciar controlador de disco
AH = 0Ah HD Leer sectores largos
AH = 0Bh HD Escribir sectores largos
AH = 0Ch HD Mover cabeza a cilindro
AH = 0Dh HD Reiniciar unidades
AH = 0Eh PS/2 Test de lectura del controlador
AH = 0Fh PS/2 Test de escritura del controlador
AH = 10h HD Probar si la unidad está lista
AH = 11h HD Recalibrar unidad
AH = 12h PS/2 Test de la RAM del controlador
AH = 13h PS/2 Test de la unidad
AH = 14h HD Diagnostico del controlador
AH = 15h TODOS Leer tipo de unidad
AH = 16h FD Detectar cambio de medios
AH = 17h FD Selecionar tipo de medio a formatear ( Usado por la versión de DOS <= 3.1 )
AH = 18h FD Selecionar tipo de medio a formatear ( Usado por la versión de DOS >= 3.2 )
AH = 41h, BX = 55AAh EXT Comprobar si la extensiones están instaladas
AH = 42h EXT Leer sectores
AH = 43h EXT Escribir sectores
AH = 44h EXT Verificar sectores
AH = 45h EXT Bloquear/Desbloquear unidad
AH = 46h EXT Expulsar unidad
AH = 47h EXT Mover cabeza a sector
AH = 48h EXT Leer parámetros de la unidad
AH = 49h EXT Detectar cambio de tipo de unidad
AH = 4Ah CD-ROM arrancable Iniciar emulación de disco
AX = 4B00h CD-ROM arrancable Terminar emulación de disco
AX = 4B01h CD-ROM arrancable Ver estado
AH = 4Eh CD-ROM arrancable Iniciar emulación de disco y bootear
AX = 4D00h CD-ROM arrancable Retornar catalogo de booteo

TODOS: Puede ser utilizado para disco duro y disquete HD: Solo puede ser utilizado por el disco duro FD: Solo puede ser utilizado por el disquete PS/2: Solo para discos duros de equipos PS/2 EXT: Extensiones de la INT 13h

INT 13h AH=00h - Reiniciar controlador de disco

Parámetros:

AH 00h
DL Unidad (ej: 80h - Primer disco duro)

Ejemplo:

MOV AH,00h
MOV DL,00h ;Primera disquetera
INT 13h

INT 13h AH=02h - Leer sectores

Parámetros:

AH = 02h Leer sectores
AL = ?? Número de sectores a leer (tiene que ser mayor que 0)
CH = ?? 8 bit bajos del número de cilindro
CL = ?? Número de sector (bits 0-5), 2 bits altos de número de cilindro (bits 6-7, solo disco duro)
DH = ?? Número de cabeza
DL = ?? Número de unidad
ES:BX Buffer de datos

Retorna:

CF Activada en error, limpia si no hay error
AH = ?? Estado
AL = ?? Número de sectores transferidos

Ejemplo:

MOV AH,02h
MOV AL,10 ;10 sectores a leer
MOV CH,02 ;Cilindro 2
MOV CL,01 ;Empezamos desde el primer sector
MOV DH,01 ;Cabeza 1
MOV DL,00h ;Primera disquetera
MOV BX,0800h ;ES:BX - 0000:0800
INT 13h
JMP 0000h:0800h ;Saltamos a la direccion que acaba de leer

INT 13h AH=04h - Verificar sectores

Parámetros:

AH = 41h Verificar sectores
AL = ?? Numero de sectores ha verificar (tiene que ser mayor de 0)
CH = ?? 8 bits bajos del número del cilindro
CL = ?? Número de sector (Bits 0-5), 2 bits altos del número del cilindro (Sólo disco duro)
DH = ?? Número de cabeza
DL = ?? Número de unidad
ES:BX Buffer de datos

Retorna:

CF Activada en error, limpia si no hay error
AH = ?? Estado
AL = ?? Número de sectores verificados

Ejemplo:

MOV AH,04h
MOV AL,18 ;18 sectores ha comprobar
MOV CH,3 ;Cilindro 3
MOV CL,1 ;Sector 1
MOV DH,00 ;Cabeza 0
MOV DL,00 ;Primera disquetera
MOV BX,00 ;Ponemos el buffer en 0000:0800
MOV ES,BX
MOV BX,0800h
INT 13h
JC sector_malo_o_error
;Si viene aquí los sectores están bien
sector_malo_o_error:
;Si viene aquí hay un sector dañado o ha habido otro tipo de error

INT 13h AH=41h - Comprobar si las extensiones están instaladas

Parámetros:

AH = 41h Comprobar extensiones
BX = 55AAh Comprobar extensiones
DL = ?? Número de unidad

Retorna:

CF Activada en error (no hay extensiones), limpia si no hay error
AH = ?? Número de la versión mayor de las extensiones (01h = 1.x, 20h = 2.0 / EDD-1.0, 21h = 2.1 / EDD-1.1, 30h = EDD-3.0)
AL = ?? Uso Interno
BX = 55AAh Devuelve 55AAh si están instaladas
CX = ?? Lista de bits de las extensiones instaladas (Bit 0-15)
DH = ?? Versión de las extensiones (v2.0+ ??? -- no presente en 1.x)

Ejemplo:

MOV AH,41h
MOV BX,55AAh
MOV DL,80h ;Primer disco duro
INT 13h
JC no_hay_extensiones
;Si viene aquí las extensiones están instaladas
no_hay_extensiones:
;Si viene aquí las extensiones no están instaladas

Véase también

Enlaces externos


Wikimedia foundation. 2010.

Игры ⚽ Нужна курсовая?

Mira otros diccionarios:

  • INT 13 — is shorthand for interrupt 0x13, the 20th interrupt vector in an x86 based computer system. (Interrupts start at zero, and are labeled with hexadecimal values.) INT is an x86 instruction that triggers a software interrupt, and 0x13 is the vector… …   Wikipedia

  • Int 15h — es la forma abreviada de la interrupción 0x15. Esta interrupción controla los servicios extendidos del PC. Contenido 1 Características 2 Lista de servicios de la INT 15h 3 Tabla de funciones de Joystick …   Wikipedia Español

  • Int 10h — es la forma abreviada de la interrupción 0x10. Esta interrupción controla los servicios de pantalla del PC. Contenido 1 Características 2 Lista de funciones soportadas 3 Tabla de modos de vídeo …   Wikipedia Español

  • INT 10 — is shorthand for interrupt 0x10 or interrupt 10h and is the 17th interrupt vector (interrupts begin at 0, and are usually specified as hexadecimal values). This corresponds to the BIOS interrupt call for video services. Such services include… …   Wikipedia

  • Int 80h — Este artículo o sección necesita referencias que aparezcan en una publicación acreditada, como revistas especializadas, monografías, prensa diaria o páginas de Internet fidedignas. Puedes añadirlas así o avisar …   Wikipedia Español

  • Mode 13h — Default VGA 256 color palette Mode 13h is the IBM VGA BIOS mode number for a specific standard 256 color mode on IBM s VGA graphics hardware. It features a resolution of 320×200 pixels[1] and was used extensively in computer games and… …   Wikipedia

  • Modo 13h — El Modo 13h o modo13 es un término utilizado para un modo gráfico estándar de 256 colores en las tarjetas gráficas VGA de IBM. Tiene una resolución de 320x200 píxeles y fue usado bastante en juegos de computadora y software de arte/animación a… …   Wikipedia Español

  • Режим 13h — VGA (англ. Video Graphics Array)  стандарт мониторов и видеоадаптеров. Выпущен 1987 году для компьютеров PS/2 Model 50 и более старших[1]. VGA являлся последним стандартом, которому следовало большинство производителей видеоадаптеров.… …   Википедия

  • Объём жёсткого диска — Динамика роста ёмкости жёстких дисков с 1980 года. Ось Y в логарифмическом масштабе, поэтому аппроксимирующая линия соответствует …   Википедия

  • Барьеры размеров жёстких дисков — Динамика роста ёмкости жёстких дисков с 1980 года. Ось Y в логарифмическом масштабе, поэтому аппроксимирующая линия соответствует экспоненциальному росту По мере развития жёстких дисков их максимальная ёмкость стремительно увеличивалась. На …   Википедия

Compartir el artículo y extractos

Link directo
Do a right-click on the link above
and select “Copy Link”