Anda di halaman 1dari 3

Estrutura em camadas do

MS-DOS

Servios BIOS e DOS programas de aplicao

chamadas de sistema
pequeno auxlio de um sistema operacional
DOS

BIOS

Chamadas de sistema Invocao de chamadas de sistema

interface entre um processo e o SO na arquitetura Intel x86:


disponvel atravs de instrues Assembler INT tipo
tipo um nmero
INT type forma de utilizao:
famlia INTEL mover parmetros para os registradores especificados
permitem chamadas ao BIOS e DOS no PC cada funo tem registradores e valores especficos
consulta a documentao
vrias linguagens de programao permitem realizar codificar INT tipo
diretamente chamadas de sistema se aplicvel: testar cdigo de retorno e/ou tratar resultado
geralmente atravs de bibliotecas
passagem de parmetros
registrador, endereo ou pilha

Servios de vdeo (INT 10H) Servios de vdeo (INT 10H)

servio do BIOS AH = 6 : Rolagem de janela para cima


AL = nmero de linhas,
valor colocado em AH define a funo BH = atributo de preenchimento(*),
dependendo da funo, outros registradores podem ser CH = linha superior, uso: clear screen
necessrios CL = coluna esquerda,
modo inicial
AH = 0 : Definir modo de vdeo 25 linhas DH = linha inferior,
AL: modo de vdeo 80 colunas DL = coluna direita
AH = 1 : Definir tamanho do cursor AH = 7 : Rolagem de janela para baixo
CH: linha de varredura inicial, AH = 0CH : Escrever pixel
CL: linha de varredura final BH = pgina
AH = 2 : Definir posio do cursor DX = linha
DH = linha CX = coluna
DL = coluna AL = cor do pixel
BH = pgina (0 = primeira pgina) etc
(*) 15H: fundo preto e letras brancas

1
Servios de entrada (INT 16H) Servios de sada (INT 21H)

Servios de entrada (teclado, INT 16H) do BIOS Servio do DOS


AH = 0 : Leitura de caracter Servios de sada (standard output, INT 21H)
retira um caracter do buffer do teclado ou espera um AH = 2 : Sada de caracter
caracter;
DL: caracter
cdigo ASCII retorna em AL e cdigo de varredura em
AH AH = 9 : Sada de string
apontado por DS:DX,
AH = 1 : Verifica se uma tecla foi pressionada
terminado por $
ZF=1 : no;
AH = 6 : Entrada/Sada Direta
ZF=0 : sim
se DL=FFH, ento l teclado e retorna cdigo ASCII
AH = 2 : Obter estado em AL ou ZF=1 se no houver entrada;
retorna em AL estado de Caps Lock, Num Lock, Alt, se DL<>FFH, ento escreve DL no vdeo
Ctrl e Shift
etc
etc

Servios de entrada (INT 21H) Servios de encerramento (INT 21H)

Servios de entrada (standard in, INT 21H) AH = 0 : encerra e retorna ao DOS


AH = 1 : Entrada de caracter com eco (e espera)
cdigo ASCII retorna em AL e AH = 31H : encerra e permanece residente (TSR) -
cdigo de varredura em AH necessrio reservar memria antes !
AH = 8 : Entrada de caracter sem eco
idem servio 1 AH = 4BH : carrega e executar programa (string ASCIIZ
AH = 0BH : Verifica digitao apontado por DS:DX)
Verifica se um caracter foi digitado (AL=00H) ou no
(AL=FFH) AH = 4CH : encerrar com cdigo de retorno em AL
AH = 0CH : Esvaziar Buffer e ler teclado AL = 0 indica retorno normal;
limpa o buffer do teclado e chama a funo em AL AL<>0 indica cdigo (ERRORLEVEL))
(01, 06, 07 ou 08)
etc etc

Servios de arquivo (INT 21H) Servios de arquivo (INT 21H)

AH = 3DH : Abre arquivo existente AH = 3FH : L de arquivo


AL = modo (0: leitura, 1:escrita, 2:leitura e escrita) BX = file handler
DS:DX = ponteiro para nome do arquivo, em especificao CX = nmero de bytes a ler
ASCIIZ DS:DX = ponteiro para rea de buffer
ASCIIZ: nome e caminho completo, terminados por um byte em Retorno:
zero (0H)
Se CF=0, sucesso e AX contm nmero de bytes lidos
Retorno: Se CF=1, AX: cdigo de erro
Se CF=0, AX: file handler 05: acesso negado
Se CF=1, AX: cdigo de erro 06: handler invlido
01: funo invlida 04: no h mais handlers disponveis
02: arquivo no encontrado 05: acesso negado Obs: se o fim do arquivo atingido, indica-se sucesso mas
03: caminho no encontrado 06: modo de acesso invlido AX ser menor que CX; se tentada uma leitura aps o fim
do arquivo, indica-se erro e AX volta com zero

2
Servios de arquivo (INT 21H) Servios de arquivo (INT 21H)

AH = 3EH : Fecha arquivo (previamente aberto) AH = 3CH : Cria (se no existe) / trunca arquivo (se
BX = file handler j existe)
CX = atributo (0: normal, 2:invisvel, 4:sistema, 6:sistema e
Retorno: invisvel)
DS:DX = ponteiro para nome do arquivo, em especificao
Se CF=0, sucesso
ASCIIZ (nome e caminho completo, terminados por um byte
Se CF=1, AX: cdigo de erro em zero
06: handler invlido
Retorno:
Se CF=0, AX: file handler
Se CF=1, AX: cdigo de erro
04: no h mais handlers disponveis
03: caminho no encontrado
05: acesso negado

Servios de arquivo (INT 21H) Servios de arquivo (INT 21H)

AH = 40H : Escreve em arquivo AH = 41H : Remove arquivo existente


BX = file handler DS:DX = ponteiro para nome do arquivo, em especificao
CX = nmero de bytes a escrever ASCIIZ (nome e caminho completo, terminados por um byte
DS:DX = ponteiro para rea de buffer com bytes a serem em zero
escritos
Retorno: Retorno:
Se CF=0, sucesso e AX contm nmero de bytes escritos Se CF=0, sucesso
Se CF=1, AX: cdigo de erro Se CF=1, AX: cdigo de erro
05: acesso negado 02: arquivo no encontrado
06: handler invlido 05: acesso negado

Servios de tempo (INT 1AH) Execuo de programas

AH = 00H : Get System Time Escrever o programa fonte (xx.ASM)


Retorna o nmero de clock ticks Chavear para modo comando DOS (cmd)
Existem aproximadamente 18,2 clock ticks por segundo, Achar o diretrio correto (cd)
ou seja, 1.573.040 em 24 hrs Chamar o montador (TASM)
tasm xx
Retorno: Gerao de cdigo objeto (xx.OBJ)
CX:DX = nmero de clock ticks desde meia-noite Utilizar o carregador (TLINK)
AL = flag de meia-noite (no-zero se passou pela meia-noite tlink xx
desde a ltima leitura) Gerao de cdigo executvel (xx.EXE)
Executar programa

Anda mungkin juga menyukai