pratica06

Propaganda
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
Download