Periféricos e Interfaces Docente: Ana Paula Costa Ano lectivo 2003/2004 Anexo da aula prática 6 Serviços DOS para disco, via interrupção 21H Função Descrição Entrada Saída 1AH define endereço dta ah = 1ah ds = end. de segmento dta dx = end. de offset dta 4EH encontra 1ª entrada ah = 4eh Se erro: na directoria cx = atributo cflag = 1 ds = end. segmento da ax = código erro string com o nome da Se ok: directoria cflag = 0 dx = endereço de offset da dta contém a informação string 4FH encontra a próxima ah = 4fh Se erro: entrada na dta contém informação cflag = 1 directoria relativa à entrada anterior ax = código erro Se ok: cflag = 0 dta contém a informação 41H apaga ficheiro ah = 41h Se erro: ds = end. de segmento da cflag = 1 string com nome ficheiro ax = código erro dx = endereço de offset da Se ok: string cflag = 0 43H activa/obtém os ah = 43h Se erro: atributos do ds = end. de segmento da cflag = 1 ficheiro string com nome ficheiro ax = código erro dx = endereço de offset da Se ok: string cflag = 0 Para obter atributos: cx = atributos (se al = 00h chamado com al = 00h) Para activar atributos: al = 01h cx = atributos 5BH cria um novo ah = 5bh Se erro: ficheiro cx = atributo cflag = 1 ds = end. de segmento da ax = código erro string com nome ficheiro Se ok: dx = endereço de offset da cflag = 0 string ax = handle 3DH abre um ficheiro ah = 3dh Se erro: al = código tipo de acesso cflag = 1 ds = end. de segmento da ax = código erro string com nome ficheiro Se ok: dx = endereço de offset da cflag = 0 string ax = handle 1 Periféricos e Interfaces Docente: Ana Paula Costa continuação… Função Descrição 3EH fecha um ficheiro 3FH lê de um ficheiro 40H escreve num ficheiro Ano lectivo 2003/2004 Saída Se erro: cflag = 1 ax = código erro Se ok: cflag = 0 ah = 3fh Se erro: bx = handle cflag = 1 cx = número de bytes a ler ax = código erro ds = end. de segmento do Se ok: buffer com os dados lidos cflag = 0 dx = endereço de offset do ax = núm. de bytes lidos buffer com os dados lidos ds:dx = buffer ah = 40h Se erro: bx = handle cflag = 1 cx = número de bytes a ax = código erro escrever Se ok: ds = end. de segmento do cflag = 0 buffer com os dados ax = nº de bytes escritos dx = endereço de offset do buffer com os dados Entrada ah = 3eh bx = handle Outras informações úteis Campo de atributo Campo da data do ficheiro Bit 0 = 1 Bit 1 = 1 Bit 2 = 1 Bit 3 = 1 Bit 4 = 1 Bit 5 = 1 Bit 6 Bit 7 Bits 0 a 4 Bits 5 a 8 Bits 9 a 15 Protegido para escrita Ficheiro escondido Ficheiro de sistema Nome do volume Subdirectoria Bit de arquivo Reservado Reservado Dia do mês Mês do ano Ano (relativo a 1980) Campo da hora do ficheiro Bits 0 a 4 Bits 5 a 10 Bits 11 a 15 Estrutura da Área de Transferência do Disco Offset 0 21 22 24 26 30 Tamanho (bytes) 21 1 2 2 4 13 Descrição Área reservada para o MS-DOS Campo de atributo Campo da hora Campo da data Tamanho do ficheiro em bytes Nome e extensão do ficheiro 2 Segundos Minutos Horas