∞ Utilização das Interrupções (Interrupts) ∞ | Int 21H |
Nota: Para indicar que um determinado número está escrito em hexadecimal (base 16) uso 'H', nunca devendo ser escrito no código.
Acesso e controlo de dispositivos e directorias.
Função 19H
Get current drive
Devolve a drive actual
Argumentos:
AH = 19H
Devolução:
AL = Drive
Função 1AH
Set disk transfer area (DTA)
Atualiza a área de transferência do disco.
Argumentos:
AH = 1AH
Devolução:
DS:DX - Aponta para nova DTA (geralmente 80H)
Função 1BH
Get current drive information
Devolve informação da drive actual.
Argumentos:
AH = 1BH
Devolução:
AL = Setores por unidade de alocação
CX = Bytes por setor
DX = Número da unidade de alocação
DS:DX = Aponta para FAT ID byte
Função 1CH
Get drive information
Devolve informação da drive.
Argumentos:
AH = 1CH
DL = Número da drive
Devolução:
AL = Setores por unidade de alocação
CX = Bytes por setor
DX = Número da unidade de alocação
DS:DX = Aponta para FAT ID byte
Função 39H
Create subdirectory
Cria um subdirectório.
Argumentos:
AH = 39H
DS:DX = Aponta para FAT ID byte
Devolução:
Nada
Função 3AH
Delete subdirectory
Apaga um subdirectório.
Argumentos:
AH = 3AH
DS:DX = Aponta para FAT ID byte
Devolução:
Nada
Nota: O directório deve estar vazia
Função 3BH
Set current directory
Actualiza o directório actual.
Argumentos:
AH = 3BH
DS:DX = Aponta para uma ASCIIZ string, indicando o caminho
Devolução:
Nada
Função 3CH
Create file
Cria um novo ficheiro.
Argumentos:
AH = 3CH
CX = Atributos do ficheiro
00H - Normal
01H - Somente leitura
02H - Oculto
03H - Sistema
DX = Endereço Offset do caminho do ficheiro (nome usado no segmento .DATA especifica o nome do ficheiro)
DS = Endereço do segmento do caminho do ficheiro (endereço de .DATA)
Devolução:
AX = Código de erro
00H - Successful
01H - Invalid function number
02H - File not found
03H - Path not found
04H - No more handles available
05H - Access denied
06H - Invalid handle
07H - Bad memory control blocks
08H - Insufficient memory
09H - Invalid memory block address
0AH - Invalid environment
0BH - Invalid format
0CH - Invalid access code
...
1FH - General failure
Nota: Esta função da interrupção destruirá o ficheiro existente. Para evitar esta situação, pode usar a função 5Bh. 5B (disponível só após do DOS 3.0) é idêntico a 3C, mas retorna um código de erro se o ficheiro já existir.
Ambas as interrupções (3C e 5B) deixam o ficheiro aberto (índices parcialmente na RAM). Deve-se fechar o ficheiro antes de terminar o programa (INT 21/3E).
Função 3DH
Open file
Abre um ficheiro existente.
Argumentos:
AH = 3DH
AL = Atributos do ficheiro
00H - Normal
01H - Somente leitura
02H - Oculto
03H - Sistema
DX = Endereço Offset do caminho do ficheiro
DS = Endereço do segmento do caminho do ficheiro (endereço de .DATA)
Devolução:
Caso bem sucedida:
AX = File handle (dígito simples)
Caso mal sucedida:
AX = Código de erro (INT 21 AH = 3C)
Nota: DS:DX ponto para a etiqueta usada no segmento de .DATA especifica o nome do ficheiro como cadeia de caracteres ASCII. Os ficheiros abertos devem ser fechados antes de terminar o programa (INT 21/3E).
Função 3EH
Close file
Fecha um ficheiro existente.
Argumentos:
AH = 3EH
BX = File handle (dígito simples produzido em AX pelo comando Open file)
Devolução:
CF = 0 - Successo
CF = 1 - Falha
AX = Código de erro (INT 21 AH = 3C)
Nota: Uma falha no fecho do ficheiro pode resultar na sua destruição completa! Colocar sempre o comando Close File o mais perto possível da última operação com o ficheiro (leitura ou escrita), no caso de o programa falhar enquanto o ficheiro esta aberto.
Função 3FH
Read file
Lê um ficheiro existente.
Argumentos:
AH = 3FH
BX = File handle
CX = Número de byte a ler
DX = Endereço Offset do buffer
DS = Endereço do segmento do buffer
Devolução:
CF = 0 - Successo
AX = Número de byte lidos
Se (AX < CX) ou (AX = 0), chegou ao fim do ficheiro
CF = 1 - Falha
AX = Código de erro (INT 21 AH = 3C)
Nota: .Data lê do inicio do ficheiro até à localização apontada por DS:DX.
Por esta razão, deve-se ter a certeza que o número de bytes lidos não excede a memória alocada indicada no segmento de dados.
Função 40H
Write File
Escreve um ficheiro.
Argumentos:
AH = 40H
BX = File handle
CX = Número de byte a escrever
DX = Endereço Offset do buffer
DS = Endereço do segmento do buffer
Devolução:
CF = 0 - Successo
AX = CX = Número de byte escritos
CF = 1 - Falha
AX = Código de erro
(INT 21 AH = 3C)
Se AX != CX ocorreu um erro (p.e. disco cheio),
mesmo que CF = 0
Nota: .Data lê do inicio do ficheiro até à localização apontada por DS:DX.
Por esta razão, deve-se ter a certeza que o número de bytes lidos não excede a memória alocada indicada no segmento de dados.
Função 41H
Delete File
Apaga um ficheiro.
Argumentos:
AH = 41H
DX = Endereço Offset do buffer
DS = Endereço do segmento do buffer
Devolução:
Nada
Função 42H
Position file pointer
Posiciona ponteiro do ficheiro.
Argumentos:
AH = 42H
AL = Código do método
BX = File handle
DX = Endereço Offset do buffer
DS = Endereço do segmento do buffer
Devolução:
DX:AX = Ponteiro para o arquivo
00H - offset absoluto do byte desde o início do arquivo
01H - relativo do byte desde a posição atual
02H - offset absoluto do byte desde o fim do arquivo
Função 43H
Get or Set attributes
Devolve ou Actualiza os atributos do ficheiro.
Argumentos:
AH = 43H
AL = 0 - Get
AL = 1 - Set
CX = Novo valor do atributo
DS:DX = Aponta para um ASCIIZ
Devolução:
Em caso de Get:
Nada
Em caso de Set:
CX = Antigo valor do atributo
Função 47H
Get current directory
Devolve o directório actual.
Argumentos:
AH = 47H
DL = Número da drive
DS:SI = Aponta para a área de dados
Devolução:
CF = 0 - Successo
CF = 1 - Falha
AX = Código de erro (INT 21 AH = 3C)
Função 4EH
Find file
Procura o ficheiro.
Argumentos:
AH = 4EH
DL = Número da drive
DS:DX = Aponta para o ASCIIZ da string do arquivo que vai ser procurado
Devolução:
CF = 0 - Successo
AX = 0
CF = 1 - Falha
AX = Código de erro (INT 21 AH = 3C)
Função 56H
Rename file
Renomeia o ficheiro.
Argumentos:
AH = 56H
DS:DX aponta para ASCIIZ atual
ES:DI aponta para nova ASCIIZ
Devolução:
Nada
Função 57H
Get or Set file date and time
Devolve ou Actualiza a data e hora do ficheiro.
Argumentos:
AH = 57H
AL = 0 - Get
AL = 1 - Set
CX = Hora
DX = Data
Devolução:
Em caso de Get:
CX = Hora
DX = Data
Em caso de Set:
Nada
Warning: mysqli_connect() [function.mysqli-connect]: (28000/1045): Access denied for user 'miguelm_database'@'10.136.224.33' (using password: YES) in /srv/disk1/miguelm/www/miguelmoreira.awardspace.info/webmaster/connect.php on line 46

