View
237
Download
0
Category
Preview:
Citation preview
Interrupción 13h
Esta interrupción se encarga de las operaciones típicas de acceso a los
discos duros y a los disquetes
Tabla de unidades
En DL Acción
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
Servicios
En AH Disco Duro y/o Disquete Acción
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
TODOS: Puede ser utilizado para disco duro y disquete
Servicios
En AH Disco Duro y/o Disquete Acción
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
HD: Solo puede ser utilizado por el disco duro TODOS: Puede ser utilizado para disco duro y disquete
Servicios
En AH Disco Duro y/o Disquete Acción
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
HD: Solo puede ser utilizado por el disco duro PS/2: Solo para discos duros de equipos PS/2
Servicios
En AH Disco Duro y/o Disquete Acción
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
PS/2: Solo para discos duros de equipos PS/2HD: Solo puede ser utilizado por el disco duro TODOS: Puede ser utilizado para disco duro y disquete
Servicios
En AH Disco Duro y/o Disquete Acción
AH = 16h FD Detectar cambio de medios
AH = 17h FDSelecionar tipo de medio a
formatear ( Usado por la versión de DOS <= 3.1 )
AH = 18h FDSelecionar 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
FD: Solo puede ser utilizado por el disquete EXT: Extensiones de la INT 13h
Servicios
En AH Disco Duro y/o Disquete Acción
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
EXT: Extensiones de la INT 13h
Servicios
En AH Disco Duro y/o Disquete Acción
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
EXT: Extensiones de la INT 13h
RetornoAH Significado
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
RetornoAH Significado
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)
DMA: Acceso directo a memoria
RetornoAH Significado
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
RetornoAH Significado
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
RetornoAH Significado
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)
RetornoAH Significado
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)
RetornoAH Significado
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
• Ejemplo:MOV AH,00h MOV DL,00h ; Primera disquetera INT 13h
EjemplosINT 13h AH=00h - Reiniciar controlador de disco
EjemplosParámetros: Significado
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
INT 13h AH=02h - Leer sectores
Retorno Significado
CF Activada en error, limpia si no hay error
AH = ?? Estado
AL = ?? Número de sectores transferidos
Ejemplos
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 dirección que acaba de leer
EjemplosParámetros: Significado
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
INT 13h AH=04h - Verificar sectores
Retorno Significado
CF Activada en error, limpia si no hay error
AH = ?? Estado
AL = ?? Número de sectores verificados
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
Ejemplos
EjemplosParámetros: Significado
AH = 41h Comprobar extensiones
BX = 55AAh Comprobar extensiones
DL = ?? Número de unidad
INT 13h AH=04h - Verificar sectores
Retorno Significado
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)
MOV AH,41hMOV BX,55AAhMOV 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
Ejemplos
Recommended