interrupción 13h.pptx

23
Interrupción 13h Esta interrupción se encarga de las operaciones típicas de acceso a los discos duros y a los disquetes

Upload: gerardo-pingo

Post on 18-Jan-2016

246 views

Category:

Documents


0 download

TRANSCRIPT

Page 1: Interrupción 13h.pptx

Interrupción 13h

Esta interrupción se encarga de las operaciones típicas de acceso a los

discos duros y a los disquetes

Page 2: Interrupción 13h.pptx

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

Page 3: Interrupción 13h.pptx

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

Page 4: Interrupción 13h.pptx

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

Page 5: Interrupción 13h.pptx

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

Page 6: Interrupción 13h.pptx

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

Page 7: Interrupción 13h.pptx

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

Page 8: Interrupción 13h.pptx

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

Page 9: Interrupción 13h.pptx

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

Page 10: Interrupción 13h.pptx

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

Page 11: Interrupción 13h.pptx

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

Page 12: Interrupción 13h.pptx

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

Page 13: Interrupción 13h.pptx

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

Page 14: Interrupción 13h.pptx

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)

Page 15: Interrupción 13h.pptx

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)

Page 16: Interrupción 13h.pptx

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

Page 17: Interrupción 13h.pptx

• Ejemplo:MOV AH,00h MOV DL,00h ; Primera disquetera INT 13h

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

Page 18: Interrupción 13h.pptx

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

Page 19: Interrupción 13h.pptx

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

Page 20: Interrupción 13h.pptx

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

Page 21: Interrupción 13h.pptx

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

Page 22: Interrupción 13h.pptx

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)

Page 23: Interrupción 13h.pptx

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