CAPÍTULO 5: INTERRUPÇÕES E GERÊNCIA DE ARQUIVOS
Conteúdo:
5.1.Interrupções 5.2.Gerenciamento de arquivos
--------------- // ---------------
5.1. Interrupções.
Conteúdo
5.1.1.Interrupções de hardware interno 5.1.2.Interrupções de hardware externo 5.1.3.Interrupções de software 5.1.4.Interrupções mais comuns
5.1.1.Interrupções de hardware interno
Interrupções internas são geradas por certos eventos que ocorrem durante a execução de um programa. Este tipo de interrupções são gerenciadas, na sua totalidade, pelo hardware e não é possível modificá-las. Um exemplo claro deste tipo de Interrupções a que atualiza o contador do clock interno do computador, o hardware chama esta interrupção muitas vezes durante um segundo. Não nos é permitido gerenciar diretamente esta interrupção, uma vez que não se pode controlar a hora atualizada por software. Mas podemos usar seus efeitos no computador para o nosso benefício, por exemplo para criar um virtual clock atualizado continuamente pelo contador interno de clock. Para tanto, precisamos apenas ler o valor atual do contador e o transformar num formato compreensível pelo usuário.
--------------- // ---------------
5.1.2.Interrupções de hardware externo
Interrupções externas são geradas através de dispositivos periféricos, tais como teclados, impressoras, placas de comunicação, entre outros.São também geradas por co-processadores.Não é possível desativar interrupções externas. Estas interrupções não são enviadas diretamente para a CPU, mas, de uma forma melhor, são enviadas para um circuito integrado cuja função exclusiva é manusear este tipo de interrupção. O circuito, chamado PIC8259A, é controlado pela CPU através de uma série de comunicação chamada paths.
--------------- // ---------------
5.1.3.Interrupções de software
Interrupções de software podem ser ativadas diretamente por nossos programas assembly, invocando o número da interrupção desejada com a instrução INT. O uso das interrupções facilita muito a criação dos programas, torna-os menores. Além disso, é fácil compreendê-las e geram boa performance. Estes tipos de interrupções podem ser separadas em duas categorias: Interrupções do Sistema Operacional DOS e Interrupções do BIOS. A diferença entre ambas é que as interrupções do sistema operacional são mais fáceis de usar, mas também são mais lentas, uma vez que acessam os serviços do BIOS. Por outro lado, Interrupções do BIOS são muito mais rápidas, mas possuem a desvantagem de serem parte do hardware, o que significa serem específicas à arquitetura do computador em questão. A escolha sobre qual o tipo de interrupção usar irá depender somente das características que você deseja dar ao seu programa: velocidade (use BIOS), portabilidade (use DOS).
--------------- // ---------------
5.1.4.Interrupções mais comuns
Conteúdo
5.1.4.1.Int 21H (interrupção do DOS) Múltiplas chamadas funções DOS. 5.1.4.2.Int 10H (interrupção do BIOS) Entrada e Saída de Vídeo. 5.1.4.3.Int 16H (interrupção do BIOS) Entrada e Saída do Teclado. 5.1.4.4.Int 17H (interrupção do BIOS) Entrada e Saída da Impressora.
--------------- // ---------------
5.1.4.1. Interrupção 21H
Propósito: Chamar uma diversidade de funções DOS.Sintaxe:
Int 21H
Nota: Quando trabalhamos com o programa TASM é necessário especificar que o valor que estamos usando está em hexadecimal. Esta interrupção tem muitas funções, para acessar cada uma delas é necess rio que o número correspondente da função esteja no registrador AH no momento da chamada da interrupção.
Funções para mostrar informações no vídeo.
02H Exibe um caracter 09H Exibe uma cadeia de caracteres 40H Escreve num dispositivo/arquivo
Funções para ler informações do teclado.
01H Entrada do teclado 0AH Entrada do teclado usando buffer 3FH Leitura de um dispositivo/arquivo
Funções para trabalhar com arquivos.
Nesta seção são apenas especificadas as tarefas de cada função, para uma referência acerca dos conceitos usados, veja introdução ao gerenciamento de arquivos.
Método FCB
0FH Abertura de arquivo 14H Leitura seqüêncial 15H Escrita seqüêncial 16H Criação de arquivo 21H Leitura randômica 22H Escrita randômica
Handles
3CH Criação de arquivo 3DH Abertura de arquivo 3EH Fechamento de arquivo 3FH Leitura de arquivo/dispositivo 40H Escrita de arquivo/dispositivo 42H Move ponteiro de leitura/escrita num arquivo
FUN�ÃO 02H
Uso: Mostra um caracter na tela.
Registradores de chamada:
AH = 02H DL = Valor de caracter a ser mostrado.
Registradores de retorno:
Nenhum.
Esta função mostra o caracter cujo código hexadecimal corresponde ao valor armazenado no registrador DL, e não modifica nenhum registrador.
O uso da função 40H é recomendado ao invés desta função.
FUN�ÃO 09H
Uso: Mostra uma cadeia de caracteres na tela.
Registradores de chamada:
AH = 09H DS:DX = Endereço de início da cadeia de caracteres.
Registradores de retorno:
Nenhum.
Esta função mostra os caracteres, um por um, a partir do endereço indicado nos registradores DS:DX até encontrar um caracter $, que é interpretado como fim da cadeia.
É recomendado usar a função 40H ao invés desta.
FUN�ÃO 40H
Uso: Escrever num dispositivo ou num arquivo.
Registradores de chamada:
AH = 40H BX = número do handle CX = Quantidade de bytes a gravar DS:DX = Área onde está o dado
Registradores de retorno:
CF = 0 se não houve erro AX = número de bytes escrito CF = 1 se houve erro AX = Código de erro
Para usar esta função para mostrar a informação na tela, faça o registrador BX ser igual a 1, que é o valor default para o vídeo no DOS.
FUN�ÃO 01H
Uso: Ler um caracter do teclado e mostrá-lo.
Registradores de chamada:
AH = 01H
Registradores de retorno:
AL = Caracter lido
É muito fácil ler um caracter do teclado com esta função, o código hexadecimal do caracter lido é armazenado no registrador AL. Nos caso de teclas especiais, como as de função F1, F2, além de outras, o registrador AL conterá o valor 1, sendo necessário chamar a função novamente para obter o código daquele caracter.
FUN�ÃO 0AH
Uso: Ler caracteres do teclado e armazená-los num buffer.
Registradores de chamada:
AH = 0AH DS:DX = Endereço inicial da área de armazenamento BYTE 0 = Quantidade de bytes na área BYTE 1 = Quantidade de bytes lidos do BYTE 2 at BYTE 0 + 2 = caracteres lidos
Registradores de retorno:
Nenhum.
Os caracteres são lidos e armazenados num espaço de memória que foi definido. A estrutura deste espaço indica que o primeiro byte representar a quantidade máxima de caracteres que pode ser lida. O segundo, a quantidade de caracteres lidos e, no terceiro byte, o inicio onde eles são armazenados. Quando se atinge a quantidade máxima permitida, ouve-se o som do speaker e qualquer caracter adicional é ignorado. Para finalizar a entrada, basta digitar [ENTER].
FUN�ÃO 3FH
Uso: Ler informação de um dispositivo ou de um arquivo.
Registradores de chamada:
AH = 3FH BX = número do handle CX = número de bytes a ler DS:DX = Área para receber o dado
Registradores de retorno:
CF = 0 se não há erro e AX = número de bytes lidos. CF = 1 se há erro e AX conterá o código de erro.
FUN�ÃO 0FH
Uso: Abrir um arquivo FCB.
Registradores de chamada:
AH = 0FH DS:DX = Ponteiro para um FCB
Registradores de retorno:
AL = 00H se não há problemas, de outra forma retorna 0FFH
FUN�ÃO 14H
Uso: Leitura sequencial num arquivo FCB.
Registradores de chamada:
AH = 14H DS:DX = Ponteiro para um FCB já aberto.
Registradores de retorno:
AL = 0 se não há erros, de outra forma o código correspondente de erro retornar : 1 erro no fim do arquivo, 2 erro na estrutura FCB e 3 erro de leitura parcial. O que esta função faz é ler o próximo bloco de informações do endereço dado por DS:DX, e atualizar este registro.
FUN�ÃO 15H
Uso: Escrita sequencial e arquivo FCB.
Registradores de chamada:
AH = 15H DS:DX = Ponteiro para um FCB já aberto.
Registradores de retorno:
AL = 00H se não há erros, de outra forma conterá o código de erro: 1 disco cheio ou arquivo somente de leitura, 2 erro na formação ou na especificação do FCB.
A função 15H atualiza o FCB ap�s a escrita do registro para o presente bloco.
FUN�ÃO 16H
Uso: Criar um arquivo FCB. Registradores de chamada:
AH = 16H DS:DX = Ponteiro para um FCB já aberto.
Registradores de retorno:
AL = 00H se não há erros, de outra forma conterá o valor 0FFH.
É baseada na informação advinda de um FCB para criar um arquivo num disco.
FUN�ÃO 21H
Uso: Ler de modo randômico um arquivo FCB.
Registradores de chamada:
AH = 21H DS:DX = Ponteiro para FCB aberto.
Registradores de retorno:
A = 00H se não há erro, de outra forma AH conterá o código de erro: 1 se é o fim do arquivo, 2 se há um erro de especificação no FCB e 3 se um registro foi lido parcialmente ou o ponteiro de arquivo está no fim do mesmo. Esta função lê o registro especificado pelos campos do bloco atual e registro de um FCB aberto e coloca a informação na DTA, área de Transferência do Disco.
FUNÇÃO 22H
Uso: Escrita randômica num arquivo FCB.
Registradores de chamada:
AH = 22H DS:DX = Ponteiro para um FCB aberto.
Registradores de retorno:
AL = 00H se não há erro, de outra forma conterá o código de erro: 1 se o disco está cheio ou o arquivo é apenas de leitura e 2 se há um erro na especificação FCB. Escreve o registro especificado pelos campos do bloco atual e registro de um FCB aberto. Esta informação é do conteúdo da DTA.
FUNÇÃO 3CH
Uso: Criar um arquivo se não existe ou deixá-lo com comprimento 0 se existe.
Registradores de chamada:
AH = 3CH CH = Atributo do arquivo DS:DX = Nome do arquivo, no formato ASCII.
Registradores de retorno:
CF = 0 e AX informa o número do handle se não há erro. Se caso houver erro, CF será 1 e AX conterá o código de erro: 3 caminho não encontrado, 4 não há handles disponíveis e 5 acesso negado. Esta função substitui a função 16H. O nome do arquivo é especificado numa cadeia ASCII de bytes terminados pelo caracter 0.
O arquivo criado conterá os atributos definidos no registrador CX, do seguinte modo:
Valor Atributos 00H Normal 02H Hidden 04H System 06H Hidden e System
O arquivo é criado com permissão de leitura e escrita.Não é possível a criação de diretórios através desta função.
FUNÇÃO 3DH
Uso: Abre um arquivo e retorna um handle.
Registradores de chamada:
AH = 3DH AL = modo de acesso DS:DX = Nome do arquivo, no formato ASCII.
Registradores de retorno:
CF = 0 e AX = número do handle se não há erros, de outra forma CF = 1 e AX = código de erro: 01H se a função não é válida, 02H se o arquivo não foi encontrado, 03H se o caminho não foi encontrado, 04H se não há handles disponíveis, 05H acesso negado, e 0CH se o código de acesso não é válido.
O handle retornado é de 16 bits.
O código de acesso é especificado da seguinte maneira:
BITS 7 6 5 4 3 2 1
. . . . 0 0 0 Apenas leitura . . . . 0 0 1 Apenas escrita . . . . 0 1 0 Leitura/Escrita . . . x . . . RESERVADO
FUNÇÃO 3EH
Uso: Fecha um arquivo (handle).
Registradores de chamada:
AH = 3EH BX = número do handle associado
Registradores de retorno:
CF = 0 se não há erros, ou CF será 1 e AX conterá o código de erro: 06H se o handle é inválido. Esta função atualiza o arquivo e libera o handle que estava usando.
FUNÇÃO 3FH
Uso: Ler uma quantidade específica de bytes de um arquivo aberto e armazená -los num buffer específico.
--------------- // ---------------
5.1.4.2.Interrupção 10h
Propósito: Chamar uma diversidade de funções do BIOS
Sintaxe:
Int 10H
Esta interrupção tem várias funções, todas para entrada e saída de vídeo. Para acessar cada uma delas é necessário colocar o número da função correspondente no registrador AH.
Veremos apenas as funções mais comuns da interrupção 10H.
função 02H, seleciona a posição do cursor função 09H, exibe um caracter e o atributo na posição do cursor função 0AH, exibe um caracter na posição do cursor função 0EH, modo alfanumérico de exibição de caracteres
FUNÇÃO 02h
Uso: Move o cursor na tela do computador usando o modo texto.
Registradores de chamada:
AH = 02H BH = Página de vídeo onde o cursor está posicionado. DH = linha DL = coluna
Registradores de retorno:
Nenhum.
A posição do cursor é definida pelas suas coordenadas, iniciando-se na posição 0,0 até a posição 79,24. Logo os valores possíveis para os registradores DH e DL são: de 0 a 24 para linhas e de 0 a 79 para colunas.
FUNÇÃO 09h
Uso: Mostra um determinado caracter várias vezes na tela do computador com um atributo definido, iniciando pela posição atual do cursor.
Registradores de chamada:
AH = 09H AL = Caracter a exibir BH = Página de vídeo, onde o caracter será mostrado BL = Atributo do caracter CX = número de repetições.
Registradores de retorno:
Nenhum
Esta função mostra um caracter na tela v rias vezes, de acordo com o número especificado no registrador CX, mas sem mudar a posição do cursor na tela.
FUNÇÃO 0Ah
Uso: Exibe um caracter na posição atual do cursor.
Registradores de chamada:
AH = 0AH AL = Caracter a exibir BH = Página de vídeo onde o caracter será exibido BL = Cor do caracter (apenas em modo gráfico) CX = número de repetições
Registradores de retorno:
Nenhum.
A principal diferença entre esta função e a anterior é permitir mudança nos atributos, bem como mudar a posição do cursor.
FUNÇÃO 0EH
Uso: Exibir um caracter na tela do computador atualizando a posição do cursor.
Registradores de chamada:
AH = 0EH AL = Caracter a exibir BH = Página de vídeo onde o caracter será exibido BL = Cor a usar (apenas em modo gráfico)
Registradores de retorno:
Nenhum
--------------- // ---------------
5.1.4.3.Interrupção 16H
Veremos duas funções da interrupção 16H. A exemplo das demais interrupções, usa-se o registrador AH para chamá-las.
Funções da interrupção 16h
função 00H, lê um caracter do teclado. função 01H, lê o estado atual do teclado.
FUNÇÃO 00H Uso: Ler um caracter do teclado.
Registradores de chamada:
AH = 00H
Registradores de retorno:
AH = Código da tecla pressionada AL = Valor ASCII do caracter
Quando se usa esta interrupção, os programas executam até que uma tecla seja pressionada. Se é um valor ASCII, é armazenado no registrador AH. Caso contrário, o código é armazenado no registrador AL e AH=0. Este valor de AL pode ser utilizado quando queremos detectar teclas que não estão diretamente representadas pelo seu valor ASCII, tais como [ALT][CONTROL].
FUNÇÃO 01h
Uso: Ler o estado do teclado
Registradores de chamada:
AH = 01H
Registradores de retorno:
Se o registrador de flag é zero, significa que há informação no buffer de teclado na memória. Caso contrário, o buffer está vazio. Portanto o valor do registrador AH será o valor da tecla armazenada no buffer.
--------------- // ---------------
5.1.4.4.Interrupção 17H
Propósito: Manusear a entrada e saída da impressora.
Sintaxe:
Int 17H
Esta interrupção é usada para enviar caracteres, setar ou ler o estado de uma impressora.
Funções da interrupção 17h
função 00H, imprime um valor ASCII função 01H, seta a impressora função 02H, lê estado da impressora
FUNÇÃO 00H
Uso: Imprimir um caracter numa impressora.
Registradores de chamada:
AH = 00H AL = Caracter a imprimir DX = Porta de conexão
Registradores de retorno:
AH = Estado da impressora
Os valores da porta a colocar no registrador DX são:
LPT1 = 0, LPT2 = 1, LPT3 = 2 ...
O estado da impressora é codificado bit a bit como segue:
BIT 1/0 SIGNIFICADO ---------------------------------------- 0 1 Estado de time-out 1 - 2 - 3 1 Erro de entrada e saída 4 1 Impressora selecionada 5 1 Fim de papel 6 1 Reconhecimento de comunicação 7 1 A impressora está pronta para o uso
Os bits 1 e 2 bits não são relevantes
A maioria dos BIOS suportam 3 portas paralelas, havendo alguns que suportam 4.
FUNÇÃO 01h
Uso: Setar uma porta paralela.
Registradores de chamada:
AH = 01H DX = Porta
Registradores de retorno:
AH = Status da impressora
A porta definida no registrador DX pode ser: LPT1=0, LPT2=1, assim por diante.
O estado da impressora é codificado bit a bit como segue:
BIT 1/0 SIGNIFICADO ---------------------------------------- 0 1 Estado de time-out 1 - 2 - 3 1 Erro de entrada e sa�da 4 1 Impressora selecionada 5 1 Fim de papel 6 1 Reconhecimento de comunica�o 7 1 A impressora est pronta para o uso
Os bits 1 e 2 bits não são relevantes
FUNÇÃO 02h
Uso: Obter o status da impressora.
Registradores de chamada:
AH = 01H DX = Porta
Registradores de retorno
AH = Status da impressora
A porta definida no registrador DX pode ser: LPT1=0, LPT2=1, assim por diante.
O estado da impressora é codificado bit a bit como segue:
BIT 1/0 SIGNIFICADO ---------------------------------------- 0 1 Estado de time-out 1 - 2 - 3 1 Erro de entrada e sa�da 4 1 Impressora selecionada 5 1 Fim de papel 6 1 Reconhecimento de comunica�o 7 1 A impressora est pronta para o uso
Os bits 1 e 2 bits não são relevantes
--------------- // ---------------
5.2. Gerenciamento de Arquivos
Conteúdo:
5.2.1.Modos de trabalhar com arquivos 5.2.2.Método FCB 5.2.3.Métodos de canais de comunicação
5.2.1.Modos de trabalhar com arquivos.
Há dois modos de trabalhar com arquivos. O primeiro é através de FCB ( blocos de controle de arquivo), o segundo é através de canais de comunicação, também conhecidos como handles. O primeiro modo de manusear arquivos tem sido usado desde o sistema operacional CPM, predecessor do DOS, logo permite certas compatibilidades com muitos arquivos velhos do CPM bem como com a versão 1.0 do DOS, além deste método permitir-nos ter um número ilimitado de arquivos abertos ao mesmo tempo. Se você quiser criar um volume para o disco, a única forma é através deste método. Depois de considerarmos as vantagens de FCB, o uso do método de Canais de Comunicação é muito simples e permite-nos um melhor manuseio de erros. Para uma melhor facilidade, daqui por diante nos referiremos aos Blocos de Controle de Arquivo como FCBs e aos Canais de Comunicação como handles.
--------------- // ---------------
5.2.2.Método FCB.
5.2.2.1.Introdução 5.2.2.2.Abertura de arquivo 5.2.2.3.Criar um novo arquivo 5.2.2.4.Escrita seqüêncial 5.2.2.5.Leitura seqüêncial 5.2.2.6.Leitura e escrita randômica 5.2.2.7.Fechar um arquivo
--------------- // ---------------
5.2.2.1.INTRODU�ÃO
Há dois tipos de FCB, o normal, cujo comprimento é 37 bytes, e o extendido, com 44 bytes. Neste tutorial iremos assumir o primeiro, ou seja, quando falarmos em FCB, estaremos fazendo referência ao tipo normal (37 bytes). O FCB é composto de informações dadas pelo programador e por informações que ele toma diretamente do sistema operacional. Quando estes tipos de arquivos são usados, só é possível se trabalhar no diretório corrente, pois FCBs não fornecem suporte ao sistema de organização de arquivos através de diretórios do DOS.
FCB é composto pelos seguintes campos:
POSIÇÃO COMPRIMENTO SIGNIFICADO 00H 1 Byte Drive 01H 8 Bytes Nome do arquivo 09H 3 Bytes Extensão 0CH 2 Bytes número do bloco 0EH 2 Bytes Tamanho do registro 10H 4 Bytes Tamanho do arquivo 14H 2 Bytes Data de criação 16H 2 Bytes Hora de criaçãoo 18H 8 Bytes Reservado 20H 1 Bytes Registro corrente 21H 4 Bytes Registro randômico
Para selecionar o drive de trabalho, assuma: drive A = 1; drive B = 2; etc. Se for usado 0, o drive que está sendo usado no momento será tomado como opção. O nome do arquivo deve ser justificado à esquerda e é necessário preencher com espaços os bytes remanescentes, a extensão é colocada do mesmo modo. O bloco corrente e o registro corrente dizem ao computador que registro ser acessado nas operações de leitura e escrita. Um bloco é um grupo de 128 registros. O primeiro bloco de arquivo é o bloco 0. O primeiro registro é o registro 0, logo o último registro do primeiro bloco deve ser o 127, uma vez que a numeração é iniciada com 0 e o bloco pode conter 128 registradores no total.
--------------- // ---------------
5.2.2.2.ABERTURA DE ARQUIVO
Para abrir um arquivo FCB é usada a função 0FH da interrupção 21h. A unidade, o nome e a extensão do arquivo devem ser inicializadas antes da abertura. O registrador DX deve apontar para o bloco. Se o valor FFH é retornado no registrador AH quando da chamada da interrupção, então o arquivo não foi encontrado. Se tudo der certo, o valor 0 é retornado. Se o arquivo é aberto, então o DOS inicializa o bloco corrente em 0, o tamanho do registro para 128 bytes. O tamanho do arquivo e a sua data são preenchidos com as informações encontradas no diretório.
--------------- // ---------------
5.2.2.3.CRIAR UM NOVO ARQUIVO
Para a criação de arquivos é usada a função 16H da interrupção 21h. O registrador DX deve apontar para uma estrutura de controle cujo os requisitos são de que pelo menos a unidade lógica, o nome e a extensão do arquivo sejam definidas. Caso ocorra problema, o valor FFH deve retornar em AL, de outra forma este registrador conterá o valor 0.
--------------- // ---------------
5.2.2.4.ESCRITA SEQÜENCIAL
Antes de conseguirmos realizar escrita para o disco, é necessário definir a área de transferência de dados usando, para tanto, a função 1AH da interrupção 21h. A função 1AH não retorna qualquer estado do disco nem da operação. Mas a função 15H, que usaremos para escrever para o disco, faz isso no registrador AL. Se este for igual a zero, então não há erro e os campos de registro corrente e de bloco são atualizados.
--------------- // ---------------
5.2.2.5.LEITURA SEQÜENCIAL
Antes de tudo, devemos definir a área de transferência de arquivo ou DTA. Para a leitura seqüêncial usaremos a função 14H da interrupção 21h. O registro a ser lido é definido pelos campos registro e bloco corrente. O registrador AL retorna o estado da operação. Se AL contém o valor 1 ou 3, significa que foi atingido o fim do arquivo. Um valor 2, por sua vez, significa que o FCB está estruturado erroneamente. Caso não ocorra erro, AL conterá o valor 0 e os campos de registro e bloco corrente são atualizados.
--------------- // ---------------
5.2.2.6.LEITURA E ESCRITA RANDÔMICA
A função 21H e a função 22H da insterrupção 21h são usadas à realização, respectivamente, da escrita e leitura randômica. O número de registro randômico e o bloco corrente são usados para calcular a posição relativa do registro a ser lido ou escrito. O registrador AL retorna a mesma informação do que par a escrita e leitura seqüêncial. A informação a ser lida será retornada na área de transferência do disco, bem como a informação a ser escrita retorna na DTA.
--------------- // ---------------
5.2.2.7.FECHAR UM ARQUIVO
Para fechar um arquivo usamos a função 10H da interrupção 21h.
Se após invocar esta função, o registrador AL conter o valor FFH, significa que o arquivo foi mudado de posição, o disco foi mudado ou há erro de acesso a disco.
--------------- // ---------------
5.2.3.Canais de comunicação.
5.2.3.1.Trabalhando com handles 5.2.3.2.Funções para usar handles
5.2.3.1.TRABALHANDO COM HANDLES
O uso de handles para gerenciar arquivos traz grandes facilidades na criação de arquivos e o programador pode concentrar-se em outros aspectos da programação sem preocupar-se com detalhes que podem ser manuseados pelo sistema operacional. A facilidade dos handles consiste em que para operarmos sobre um arquivo é apenas necessário definirmos o nome do mesmo e o número de handle a usar, todo o resto da informação é manuseada internamente pelo DOS. Quando usamos este método para trabalhar com arquivos, não há distinção entre acesso seqüêncial ou randômico, o arquivo é simplesmente tomado como uma rede de bytes.
--------------- // ---------------
5.2.3.2.FUNÇÕES PARA USAR HANDLES
As funções usadas para o manuseio de arquivos através de handles são descritas na página sobre: Interrupções, na seção dedicada à interrupção 21h.
*****************************************************************************