DOS Calls

Propaganda
Organização num Sistema MS-DOS
4G
Extended Memory
(4 Gbyte)
16M
EMS Window
Extended Memory
(16 Mbyte)
1. Page
2. Page
3. Page
1M
fastopen
buffers=
files=
device=
896k
768k
640k
System BIOS
4. Page
48k
32k
16k
0k
BIOS Extension
Video RAM
COMMAND.COM (Transient)
Application
Programs
DOS Data
BIOS Data
INT Vectors
COMMAND.COM (Resident)
MSDOS.SYS
IO.SYS
0k
128
Interface entre
Aplicações/Sistema Operativo MS-DOS /BIOS /Hardware
Maior
Portabilidade
Aplicações
(1)
(2)
1) “DOS Calls”
Chamadas ao Sistema Operativo
(3)
MS-DOS
2) “BIOS Calls”
Chamadas à BIOS (Basic Input/Output
System)
BIOS
HARDWARE
Menor
Portabilidade
3) Acesso Directo aos Recursos do
Hardware.
Programação directa dos Registos
(1) - Chamadas ao Sistema " DOS Calls"
(2) - " BIOS Calls"
Interrupçõ es por Sof tware
129
Interface entre
Aplicações/Sistema Operativo MS-DOS /BIOS /Hardware
Chamada da Rotina de Resposta a Interrupção N
Tabela de VECTORES
de INTERRUPÇÃO
1. Coloca Registo de Flags na PILHA
N.º INT
2. Coloca Flag IF e TF a zero para
impedir nova Interrupção
00400h
255
003FCh
…
…
N
Instrução
INT N
Descrição:
N*4
…
…
1
00004h
0
00000h
MEMÓRIA
3. Coloca na Pilha o Endereço de
Retorno (Segmento + Deslocamento)
4. Invoca a Rotina de resposta a
Interrupção cujo endereço (Segmento
+ Deslocamento) está no Índice N da
Tabela de Vectores de Interrupção
130
Interface entre
Aplicações/Sistema Operativo MS-DOS /BIOS /Hardware
Acesso aos SERVIÇOS/FUNÇÕES do DOS
Instrução
INT 21h
Nº do Serviço Parâmetros Parâmetros de
Saída
/Função Registo de Entrada
Mecanismo de passagem de parâmetros
AH
Por REGISTOS
AL = Dia da
Semana
0 = Domingo
1 =Segunda
Exemplos:
1.
Leitura da Data do Sistema
Program GetDate
Var DiaSem, Mês, DiaMes :Byte;
Ano :Word;
Begin
ASM
MOV AH,2Ah {N.º da Função}
INT 21h
{DOS call}
MOV DiaSem, AL
MOV Mes, DH
MOV DiaMes, DL
MOV Ano, CX
End;
Descrição
CX= Ano
2Ah
DH= Mês
1 = Janeiro
2 =Fevereiro
…
Leitura da data
do Sistema
DL = Dia do Mês
(1..31)
Writeln( DiaMes, ’/’, Mês,’ /’, Ano);
End.
131
Interface entre
Aplicações/Sistema Operativo MS-DOS /BIOS /Hardware
2.
Acesso aos SERVIÇOS/FUNÇÕES do DOS
Leitura de um caractere do teclado; e escrita de um caractere no display
Nº do Serviço /Função Parâmetros de Parâmetros de Saída
Descrição
Registo AH
Entrada
Caractere AL
Leitura de um caractere digitado no teclado
07h
obtido do teclado (não faz display no ecrã)
DL = Caractere
02h
Escrita de um caractere no display
a visualizar
Procedure Read_Digitos(Var S :string);
near; Assembler;
{Leitura de uma sequência de dígitos
terminada com a tecla = <RETURN>}
ASM
PUSH AX
PUSH DX
PUSH CX
PUSH ES
PUSH SI
LES SI, S
XOR CX, CX {Contador de Dígitos}
@While:
MOV AH, 07h {Função DOS nº 07h}
INT 21h
CMP AL, 13 {<RETURN>?}
JE @EndWhile
CMP AL, ‘0’
JB @NAODIGITO
CMP AL, ‘9’
JA
@NAODIGITO
INC CX
INC SI
MOV ES:[SI], AL
MOV DL, AL
MOV AH, 02h {Função DOS nº 02h}
INT 21h
@NAODIGITO:
JMP While
@EndWhile:
SUB SI, CX
MOV ES:[SI], CL {Armazena nº de dígitos}
POP SI
POP ES
POP CX
POP DX
POP AX
END;
132
Download