Apostila Assembly UFRN
88 pág.

Apostila Assembly UFRN


DisciplinaTecnologias Web4.043 materiais12.572 seguidores
Pré-visualização26 páginas
terá sido recebido e será necessário repetir a 
interrupção para que o segundo byte seja retornado em AL. A função 08h detecta a condição de 
Ctrl-Break. Não ecoa na tela. 
 
Função 09h \u2013 Escreve string na tela 
Entrada: 
 DS:DX aponta para uma string terminada com o caractere $ 
 AH = 9 
 
Função 0Ah \u2013 Entrada de string pelo teclado 
Entrada: 
 DS:DX aponta para o local onde a string será armazenada (máximo 254 caracteres) 
 [DS:DX] = quantidade de bytes alocados para a string 
 AH = 0Ah 
Saída: 
 DS:DX = string digitada 
 [DS:(DX+1)] = número de caracteres lidos 
Observação: 
Faz eco da entrada na tela. Primeiro byte da string deve ser inicializado com o tamanho. 
Segundo byte da string receberá o número de caracteres efetivamente lidos. Último caractere da string = 
<ENTER>. A string começará a partir do terceiro byte. Para ler uma string de n caracteres, deve-se 
alocar (n+3) bytes de memória e colocar o valor (n+1) no primeiro byte. Verifica Crtl-C e Crtl-Break. 
 
Função 0Bh \u2013 Verifica o status de entrada do teclado 
Entrada: AH = 0Bh 
Saída: AL = FFh (buffer não vazio) ou 0 (buffer vazio) 
 
Função 0Ch \u2013 Esvazia o buffer de entrada do teclado e executa uma função 
Entrada: AH = 0Ch 
 AL = Número da função de teclado 
Saída: Saída padrão da função selecionada 
Observação: 
Executa qualquer função de teclado do DOS, limpando primeiramente o buffer. Verifica 
Crtl-Break. 
 
 Anexo C \u2013 Interrupções BIOS e DOS 
 
© Anna Catharina/CEFET-RN/2000 78 
Função 0Dh \u2013 Reinicializa disco 
Entrada: AH = 0Dh 
 
Função 0Eh \u2013 Seleciona disco 
Entrada: 
 AH = 0Eh 
 DL = Número da unidade de disco (0 = A; 1 = B; ...) 
 
Função 0Fh \u2013 Abre arquivo preexistente 
Entrada: 
 DS:DX aponta para um FCB 
 AH = 0Fh 
Saída: AL = 0 (sucesso) ou FFh (falha) 
 
Função 10h \u2013 Fecha arquivo 
Entrada: 
 DS:DX aponta para um FCB 
 AH = 10h 
Saída: AL = 0 (sucesso) ou FFh (falha) 
 
Função 11h \u2013 Procura primeiro arquivo coincidente 
Entrada: 
 DS:DX aponta para um FCB não aberto 
 AH = 11h 
Saída: 
 AL = 0 (sucesso; DTA contém FCB para comparação) ou FFh (falha) 
 
Função 12h \u2013 Procura próximo arquivo coincidente 
Entrada: 
 DS:DX aponta para um FCB não aberto 
 AH = 12h 
Saída: 
 AL = 0 (sucesso; DTA contém FCB para comparação) ou FFh (falha) 
Observação: 
 A função 12h deve ser usada após a função 11h. 
 
Função 13h \u2013 Elimina arquivo 
Entrada: 
 DS:DX aponta para um FCB não aberto 
 AH = 13h 
Saída: 
 AL = 0 (sucesso) ou FFh (falha) 
Função 14h \u2013 Leitura seqüencial 
Entrada: 
 DS:DX aponta para um FCB aberto 
 AH = 14h 
 Bloco atual e registro ativo em FCB 
Saída: 
 Registro requerido colocado no DTA 
 Endereço do registro incrementado 
 AL = 0 (sucesso), 1 (fim de arquivo; nenhum dado no registro), 2 (segmento do DTA muito 
pequeno para registro) ou 3 (fim de arquivo; registro completado com 0) 
 
Função 15h \u2013 Escrita seqüencial 
Entrada: 
 DS:DX aponta para um FCB aberto 
 AH = 15h 
 Bloco atual e registro ativo em FCB 
Saída: 
 Registro lido no DTA e escrito 
 Endereço do registro incrementado 
 AL = 0 (sucesso), 1 (disco cheio), 2 (segmento do DTA muito pequeno para registro) 
 
Função 16h \u2013 Cria arquivo 
Entrada: 
 DS:DX aponta para um FCB não aberto 
 AH = 16h 
Saída: 
 AL = 0 (sucesso) ou FFh (falha; diretório cheio) 
 
Função 17h \u2013 Renomeia arquivo 
Entrada: 
 DS:DX aponta para um FCB modificado 
 AH = 17h 
Saída: 
 AL = 0 (sucesso) ou FFh (falha) 
 
Função 19h \u2013 Encontra unidade de disco ativa 
Entrada: 
 AH = 19h 
Saída: 
 AL = unidade de disco ativa (0 = A; 1 = B; ...) 
 
 
 Anexo C \u2013 Interrupções BIOS e DOS 
 
© Anna Catharina/CEFET-RN/2000 79 
Função 1Ah \u2013 Determina a posição do DTA (endereço de transferência de disco) 
Entrada: 
 DS:DX aponta para o novo endereço do DTA 
 AH = 1Ah 
Observação: 
 O DTA padrão tem 128 bytes e começa em CS:0080 no PSP. 
 
Função 1Bh \u2013 Informação da FAT para a unidade de disco padrão 
Entrada: 
 AH = 1Bh 
Saída: 
 DS:BX aponta para o byte da FAT 
 DX = número de clusters 
 AL = Número de setores/cluster 
 CX = Tamanho de um setor (512 bytes) 
 
Função 1Ch \u2013 Informação da FAT para a unidade de disco especificada 
Entrada: 
 AH = 1Ch 
 DL = Número da unidade (0 = padrão, 1 = A, 2 = B, ...) 
Saída: 
 DS:BX aponta para o byte da FAT 
 DX = número de clusters 
 AL = Número de setores/cluster 
 CX = Tamanho de um setor (512 bytes) 
 
Função 21h \u2013 Leitura direta 
Entrada: 
 DS:BX aponta para um FCB aberto 
 Campo de registro direto do FCB = DS:(DX+33) e DS:(DX+35) 
 AH = 21h 
Saída: 
 AL = 0 (sucesso), 1 (fim de arquivo; nenhum dado no registro), 2 (segmento do DTA muito 
pequeno para registro) ou 3 (fim de arquivo; registro completado com 0) 
 
Função 22h \u2013 Escrita direta 
Entrada: 
 DS:BX aponta para um FCB aberto 
 Campo de registro direto do FCB = DS:(DX+33) e DS:(DX+35) 
 AH = 22h 
Saída: 
 AL = 0 (sucesso), 1 (disco cheio), 2 (segmento do DTA muito pequeno para registro) 
Função 23h \u2013 Tamanho de arquivo 
Entrada: 
 DS:BX aponta para um FCB não aberto 
 AH = 23h 
Saída: 
 AL = 0 (sucesso) ou FFh (nenhum arquivo encontrado no FCB correspondente) 
 Campo de registro direto = comprimento do arquivo em registro (arredondado para mais) 
 
Função 24h \u2013 Determina campo de registro direto 
Entrada: 
 DS:BX aponta para um FCB aberto 
 AH = 24h 
Saída: 
 Campo de registro direto = registro atual e bloco ativo 
 
Função 27h \u2013 Lê bloco de arquivo direto 
Entrada: 
 DS:BX aponta para um FCB aberto 
 Campo de registro direto do FCB = DS:(DX+33) e DS:(DX+35) 
 AH = 27h 
Saída: 
 AL = 0 (sucesso), 1 (fim de arquivo; nenhum dado no registro), 2 (segmento do DTA muito 
pequeno para registro) ou 3 (fim de arquivo; registro completado com 0) 
 CX = Número de registros lidos 
 Arquivos de registro direto fixados para acesso ao próximo registro 
Observação: 
 O buffer de dados usado nos serviços do FCB é o DTA ou a área de trasnferência do disco. 
 
Função 28h \u2013 Escreve em bloco de arquivo direto 
Entrada: 
 DS:BX aponta para um FCB aberto 
 Campo de registro direto do FCB = DS:(DX+33) e DS:(DX+35) 
 AH = 27h 
Saída: 
 AL = 0 (sucesso), 1 (disco cheio), 2 (segmento do DTA muito pequeno para registro) 
 CX = 0 (fixa o arquivo no tamanho indicado pelo campo de registro direto) 
 Arquivos de registro direto fixados para acesso ao próximo registro 
Observação: 
 O buffer de dados usado nos serviços do FCB é o DTA. 
 
 
 
 Anexo C \u2013 Interrupções BIOS e DOS 
 
© Anna Catharina/CEFET-RN/2000 80 
Função 2Ah \u2013 Obtém data 
Entrada: AH = 2Ah 
Saída: 
 CX = (Ano - 1980) 
 DH = Mês (1 = janeiro, ...) 
 DL = Dia do mês 
 
Função 2Bh \u2013 Ajusta data 
Entrada: 
 CX = (Ano - 1980) 
 DH = Mês (1 = janeiro, ...) 
 DL = Dia do mês 
 AH = 2Bh 
Saída: 
 AL = 0 (sucesso) ou FFh (falha; data não válida) 
 
Função 2Ch \u2013 Obtém hora 
Entrada: 
 AH = 2Ch 
Saída: 
 CH = Horas (0 \u2013 23) 
 CL = Minutos (0 \u2013 59) 
 DH = Segundos (0 \u2013 59) 
 DL = Centésimos de segundo (0 \u2013 99) 
 
Função 2Dh \u2013 Ajusta hora 
Entrada: 
 AH = 2Dh 
 CH = Horas (0 \u2013 23) 
 CL = Minutos (0 \u2013 59) 
 DH = Segundos (0 \u2013 59) 
 DL = Centésimos de segundo (0 \u2013 99) 
Saída: 
 AL = 0 (sucesso) ou FFh (falha; hora inválida) 
 
Função 2Fh \u2013 Obtém DTA corrente 
Entrada: 
 AH = 2Fh 
Saída: 
 ES:BX = Endereço do DTA corrente 
Observação: 
 O buffer de dados usado nos serviços do FCB é o DTA ou a área de transferência de disco. 
Função 31h \u2013 Termina processo e permanece residente 
Entrada: 
 AH = 31h 
 AL = Código de saída binário 
 DX = Tamanho da memória requerida em parágrafos 
Observação: 
 O código de saída pode ser lido por um programa principal com a função 4Dh. 
 
Função 36h \u2013 Obtém espaço de disco livre 
Entrada: 
 AH = 36h 
 DL = Número da unidade de disco (0 = padrão, 1 = A, 2 = B, ...) 
Saída: 
 AX = FFFFh