52
Interface Hardware/Software Centro de Informática - UFPE Paulo Maciel [email protected]

Interface Hardware/Software Centro de Informática - UFPE Paulo Maciel [email protected]

Embed Size (px)

Citation preview

Page 1: Interface Hardware/Software Centro de Informática - UFPE Paulo Maciel prmm@cin.ufpe.br

Interface Hardware/Software

Centro de Informática - UFPEPaulo Maciel

[email protected]

Page 2: Interface Hardware/Software Centro de Informática - UFPE Paulo Maciel prmm@cin.ufpe.br

Interrupções do BIOS

• INT 10h - Vídeo– Interrupção do BIOS que trata o vídeo.– Os serviços são passados através do registrador AH.

• INT 13h – DISCO

• INT 16h - Teclado

• INT 17h – Impressora

• INT 1Ah – Ler relógio/data ou atualiza relógio/data.

2

Page 3: Interface Hardware/Software Centro de Informática - UFPE Paulo Maciel prmm@cin.ufpe.br

INT 10h - Vídeo

• Ajusta o Modo de Vídeo

– Chama-se com: AH = 00h AL = Modo

– Recebe-se em: nenhum

3

Modo (em AL) Tipo Tamanho Cor

0 Texto 40 x 25 Off

1 Texto 40 x 25 On

2 Texto 80 x 25 Off

3 Texto 80 x 25 On

4 Gráficos 320 x 200 On

5 Gráficos 320 x 200 Off

6 Gráficos 640 x 200 Off

7 Texto 80 x 25 Off

Page 4: Interface Hardware/Software Centro de Informática - UFPE Paulo Maciel prmm@cin.ufpe.br

INT 10h - Vídeo

• Ajusta formato do cursor

– Chama-se com: AH = 01h CL = Linha Inicial CH = Linha Final

– Recebe-se em: nenhum

Número de linhas = 74

Page 5: Interface Hardware/Software Centro de Informática - UFPE Paulo Maciel prmm@cin.ufpe.br

INT 10h - Vídeo

• Posiciona o cursor

– Chama-se com: AH = 02h DL = Coluna DH = Linha BH = Número da página

A tela monocromática (modo 7) possui somente uma página de texto.

– Recebe-se em: nenhum

5

Page 6: Interface Hardware/Software Centro de Informática - UFPE Paulo Maciel prmm@cin.ufpe.br

INT 10h - Vídeo

• Ler posição do cursor

– Chama-se com: AH = 03h BH = Número da página

– Recebe-se em: DL = Linha Inicial DH = ColunaInicial CX = Tipo do Cursor

6

Page 7: Interface Hardware/Software Centro de Informática - UFPE Paulo Maciel prmm@cin.ufpe.br

INT 10h - Vídeo

• Selecionar página

– Chama-se com: AH = 05h AL = Página

– Recebe-se em: nenhum

7

Page 8: Interface Hardware/Software Centro de Informática - UFPE Paulo Maciel prmm@cin.ufpe.br

INT 10h - Vídeo

• Rolar para cima a janela de vídeo

– Chama-se com: AH = 06 AL = número de linhas a serem roladas (Zero (0) rola todas) CH = linha do canto superior esquerdo CL = coluna do canto superior esquerdo DH = linha do canto inferior direito DL = coluna do canto inferior direito BH = atributo a ser usado nas novas linhas

– Recebe-se em: nenhum

8

Page 9: Interface Hardware/Software Centro de Informática - UFPE Paulo Maciel prmm@cin.ufpe.br

INT 10h - Vídeo

• Rolar para baixo a janela de vídeo

– Chama-se com: AH = 07 AL = número de linhas a serem roladas (Zero (0) rola todas). CH = linha do canto superior esquerdo CL = coluna do canto superior esquerdo DH = linha do canto inferior direito DL = coluna do canto inferior direito BH = atributo a ser usado nas novas linhas

– Recebe-se em: nenhum

9

Page 10: Interface Hardware/Software Centro de Informática - UFPE Paulo Maciel prmm@cin.ufpe.br

INT 10h - Vídeo

• Ler o caracter e o atributo da posição do cursor

– Chama-se com: AH = 08h BH = Número da Página

– Recebe-se em: Al = Caráter AH = Atributo do caracter

10

Page 11: Interface Hardware/Software Centro de Informática - UFPE Paulo Maciel prmm@cin.ufpe.br

INT 10h - Vídeo

• Escreve caracter e atributo

– Chama-se com: AH = 09h BH = Número da Página Al = Caracter AH = Atributo do carácter CX = Número de repetições

– Recebe-se em: nenhum

11

Page 12: Interface Hardware/Software Centro de Informática - UFPE Paulo Maciel prmm@cin.ufpe.br

INT 10h - Vídeo

• Escreve caracter

– Chama-se com: AH = 10 BH = número da página AL = caracter CX = número de repetições

– Recebe-se em: nenhum

12

Page 13: Interface Hardware/Software Centro de Informática - UFPE Paulo Maciel prmm@cin.ufpe.br

INT 10h - Vídeo

• Escreve um ponto (pixel)

– Chama-se com: AH = 12 AL = cor do pixel. BH = página CX = coordenada X (coluna) DX = coordenada Y (linha)– Recebe-se em:

nenhum

13

Page 14: Interface Hardware/Software Centro de Informática - UFPE Paulo Maciel prmm@cin.ufpe.br

INT 10h - Vídeo

• Ler um ponto (pixel)

– Chama-se com: AH = 13 BH = página CX = coordenada X (coluna) DX = coordenada Y (linha)– Recebe-se em:

AL = cor do pixel.

14

Page 15: Interface Hardware/Software Centro de Informática - UFPE Paulo Maciel prmm@cin.ufpe.br

INT 10h - Vídeo

• Obtém o modo do vídeo

– Chama-se com: AH = 15

– Recebe-se em: AH = 00h

AL = Modo BH = página

15

Page 16: Interface Hardware/Software Centro de Informática - UFPE Paulo Maciel prmm@cin.ufpe.br

INT 13h - DISCO

• Reseta sistema de disco

– Chama-se com: AH = 00 DL = Número do Driver – Recebe-se em:

CF = 0 Sem erro 1 Erro AH = Código do erro

16

Código do Erro00h - sem erro01h - comando inválido02h - “address mark” não encontrado03h - disco protegido04h - setor não encontrado05h - falha de reset06h - disco removido08h - erro de DMA09h - erro de limite de DMA10h - setor com erro20h - falha do controlador40h - trilha não encontrada80h - time-out

Page 17: Interface Hardware/Software Centro de Informática - UFPE Paulo Maciel prmm@cin.ufpe.br

INT 13h - DISCO

• Obtém status

– Chama-se com: AH = 01 – Recebe-se em:

AH = Código do erro

17

Page 18: Interface Hardware/Software Centro de Informática - UFPE Paulo Maciel prmm@cin.ufpe.br

INT 13h - DISCO

• Ler/Escrever/Verificar/Formatar

– Chama-se com: AH=02h/03h/04h/05h

AL= número de setores CH= número do cilindro CL= número do setor (1, se AH=5) DH= número da cabeça DL= número da unidade ES:BX= buffer

18

Recebe-se em: CF = 0 Sem erro

1 Erro AH = Código do erro

Page 19: Interface Hardware/Software Centro de Informática - UFPE Paulo Maciel prmm@cin.ufpe.br

INT 16h - Teclado

• Aguarda a digitação de um caracter e o lê– Chama-se com: AH = 0h

Se um caractere ASCII foi digitado – Recebe-se em: AH = código de varredura AL = código ASCII

Se um caractere especial foi digitado– Recebe-se em: AH = código ASCII estendido AL = 00h

19

Page 20: Interface Hardware/Software Centro de Informática - UFPE Paulo Maciel prmm@cin.ufpe.br

INT 16h - Teclado

• Verifica se um caracter está pronto

– Chama-se com: AH = 01h

Se um caractere ASCII foi digitado – Recebe-se em: ZF=0 AH = Código de varredura AL =Código ASCII

Caso contrário, ZF=1

20

Page 21: Interface Hardware/Software Centro de Informática - UFPE Paulo Maciel prmm@cin.ufpe.br

INT 16h - Teclado

• Obtêm status do teclado

– Chama-se com: AH = 02h

– Recebe-se em: AL = status 01h - shift direito ativo

02h - shift esquerdo ativo 04h - crtl ativo 08h - alt ativo 10h - num lock ativo 20h - scroll lock ativo 40h - caps lock ativo 80h - inserção ativa

21

Page 22: Interface Hardware/Software Centro de Informática - UFPE Paulo Maciel prmm@cin.ufpe.br

INT 17h - Impressora

• Inicializa impressora

– Chama-se com: AH = 01h DX = Número da impressora (Porta paralela:

0..2) – Recebe-se em:

Nenhum

22

Page 23: Interface Hardware/Software Centro de Informática - UFPE Paulo Maciel prmm@cin.ufpe.br

INT 17h - Impressora

• Obtêm status da impressora

– Chama-se com: AH = 02h

DX = Número da impressora

– Recebe-se em:

AH = status

01h - time-out

08h - erro de I/O

10h - impressora selecionada 20h - sem papel

40h - reconhecimento

80h - impressora desocupada

23

Page 24: Interface Hardware/Software Centro de Informática - UFPE Paulo Maciel prmm@cin.ufpe.br

INT 17h - Impressora

• Imprime caractere

– Chama-se com: AH = 00h AL = caractere DX = número da impressora – Recebe-se em:

AH = status

24

Page 25: Interface Hardware/Software Centro de Informática - UFPE Paulo Maciel prmm@cin.ufpe.br

Interrupção

• INT 1Ah– Ler o Relógio;

– Atualizar o Relógio;

– Ler a Data;

– Atualizar a Data.

25

Page 26: Interface Hardware/Software Centro de Informática - UFPE Paulo Maciel prmm@cin.ufpe.br

Interrupção - INT 1Ah

• Ler o contador do relógio.

– Chama-se com: AH = 00h

– Recebe-se em: AL = 0, se não se passaram 24h da última

leitura. CX = Parte de alta-ordem do contador. DX = Parte de baixa-ordem do contador.

26

Page 27: Interface Hardware/Software Centro de Informática - UFPE Paulo Maciel prmm@cin.ufpe.br

Interrupção - INT 1Ah

• Atualizar o contador do relógio.

– Chama-se com: AH = 01h. CX = Parte de alta-ordem do contador. DX = Parte de baixa-ordem do contador.

27

Page 28: Interface Hardware/Software Centro de Informática - UFPE Paulo Maciel prmm@cin.ufpe.br

Interrupção - INT 1Ah

• Ler o relógio.

– Chama-se com: AH = 02h

– Recebe-se em: CH = Horas em BCD. CL = Minutos em BCD. DH = Segundos em BCD. DL = Milesegundos em BCD.

28

Page 29: Interface Hardware/Software Centro de Informática - UFPE Paulo Maciel prmm@cin.ufpe.br

Interrupção - INT 1Ah

• Ler a data.

– Chama-se com: AH = 04h

– Recebe-se em: CH = Século (19, 20,21) em BCD. CL = Ano em BCD. DH = Mês em BCD. DL = Dia em BCD.

29

Page 30: Interface Hardware/Software Centro de Informática - UFPE Paulo Maciel prmm@cin.ufpe.br

Interrupção - INT 1Ah

• Atualizar a data.

– Chama-se com:AH = 05h.CH = Século (19,20,21) em BCD.CL = Ano em BCD.DH = Mês em BCD.DL = Dia em BCD.

30

Page 31: Interface Hardware/Software Centro de Informática - UFPE Paulo Maciel prmm@cin.ufpe.br

Interrupção

• INT 21h– Chamar uma diversidade de funções do

DOS.

31

Page 32: Interface Hardware/Software Centro de Informática - UFPE Paulo Maciel prmm@cin.ufpe.br

Interrupção - INT 21h

• Leitura do teclado com eco.

– Chama-se com:

AH = 01h

Se um caractere ASCII foi digitado.

– Recebe-se em:

AL = código ASCII.

Se um caracter não foi digitado, aguarda.

– Exemplo.:

char db ?

.....

mov ah,1

int 21h

mov char,al

32

Page 33: Interface Hardware/Software Centro de Informática - UFPE Paulo Maciel prmm@cin.ufpe.br

Interrupção - INT 21h

• Mostra um caracter em tela.

– Chama-se com:AH = 02hDL = código ASCII do caracter.

– Exemplo.: mov ah,02mov dl,´*´int 21h

33

Page 34: Interface Hardware/Software Centro de Informática - UFPE Paulo Maciel prmm@cin.ufpe.br

Interrupção - INT 21h

• Leitura de uma entrada auxiliar (serial 1).

– Chama-se com:AH = 03h.

– Recebe-se em:AL = código ASCII.Se um caracter não foi digitado, aguarda.

– Exemplo.: char db ? ....mov ah,3int 21hmov char,al

34

Page 35: Interface Hardware/Software Centro de Informática - UFPE Paulo Maciel prmm@cin.ufpe.br

Interrupção - INT 21h

• Transmite caracter via saída auxiliar.

– Chama-se com:AH = 04hDL = código ASCII do caracter.

– Exemplo.: mov ah,04

mov dl,´*´ int 21h

35

Page 36: Interface Hardware/Software Centro de Informática - UFPE Paulo Maciel prmm@cin.ufpe.br

Interrupção - INT 21h

• Envia caracter para a impressora.

– Chama-se com:AH = 05hDL = código ASCII do caracter.

– Exemplo.: mov ah,05mov dl,´*´int 21h

36

Page 37: Interface Hardware/Software Centro de Informática - UFPE Paulo Maciel prmm@cin.ufpe.br

Interrupção - INT 21h

• Leitura do teclado sem eco (sem filtro).– Chama-se com:

AH = 07h.Se um caractere ASCII foi digitado .

– Recebe-se em:AL = código ASCII.Se um caracter não foi digitado, aguarda.Não é sensível a control-c e control-break

– Exemplo.: char db ? .....mov ah,7int 21hmov char,al

37

Page 38: Interface Hardware/Software Centro de Informática - UFPE Paulo Maciel prmm@cin.ufpe.br

Interrupção - INT 21h

• Leitura do teclado sem eco.– Chama-se com:

AH = 08h.Se um caractere ASCII foi digitado .

– Recebe-se em:AL = código ASCII.

Se um caracter não foi digitado, aguarda. Sensível a control-c e control-break

– Exemplo.: char db ?

.... mov ah,8 int 21h

mov char,al

38

Page 39: Interface Hardware/Software Centro de Informática - UFPE Paulo Maciel prmm@cin.ufpe.br

Interrupção - INT 21h

• Leitura do teclado com armazenamento no buffer.

– Chama-se com: AH = 0Ah DS:DX = apontam para o endereço

do início do buffer.

– Formato do buffer:

Byte Conteúdo 0 Máximo número de carateres a

serem lidos. 1 Número de caracteres que de

fato foram lidos. 2+ Cadeia de caracteres lida.

– Ex.:buff db 81

db 0db 81

dup(0)

mov ah,0ahmov dx,seg buffmov ds,dxlea dx,buffint 21h

39

Page 40: Interface Hardware/Software Centro de Informática - UFPE Paulo Maciel prmm@cin.ufpe.br

Interrupção - INT 21h

• Mostra cadeia de caracter na tela.

– Chama-se com:AH = 09h.DS:DX = apontam para o endereço do início da cadeia de

caracter.A cadeia dever ser finalizada com ´$´.

– Exemplo.: mens db ´Bom Dia´,´$´

.... lea dx, mens mov ah,9

int 21h

40

Page 41: Interface Hardware/Software Centro de Informática - UFPE Paulo Maciel prmm@cin.ufpe.br

Interrupção - INT 21h

• Lê a data do sistema.

– Chama-se com:AH = 2Ah.

– Recebe-se em:CX = Ano.DH = Mês (1-12).DL = Dia ( 1-31).AL = Dia da semana (0= dom, …7=sab).

41

Page 42: Interface Hardware/Software Centro de Informática - UFPE Paulo Maciel prmm@cin.ufpe.br

Interrupção - INT 21h

• Atualiza a data do sistema.– Chama-se com:

AH = 2Bh.CX = ano.DH = Mês (1-12).DL = Dia ( 1-31).

– Recebe-se em:AL = 0, se definido com sucesso.AL = FFh, caso contrário.

42

Page 43: Interface Hardware/Software Centro de Informática - UFPE Paulo Maciel prmm@cin.ufpe.br

Interrupção - INT 21h

• Lê o tempo do sistema.– Chama-se com:

AH = 2Ch.

– Recebe-se em:CH = Hora (0 – 23).CL = Minutos (0-59).DH = Segundos ( 0-59).DL = Milisegundos (0 – 99).

43

Page 44: Interface Hardware/Software Centro de Informática - UFPE Paulo Maciel prmm@cin.ufpe.br

Interrupção - INT 21h

• Atualiza o tempo do sistema.

– Chama-se com:AH = 2Dh.CH = Hora (0 – 23).CL = Minutos (0-59).DH = Segundos ( 0-59).DL = Milisegundos (0 – 99).

– Recebe-se em:AL = 0, se definido com sucessoAL = FFh, caso contrário.

44

Page 45: Interface Hardware/Software Centro de Informática - UFPE Paulo Maciel prmm@cin.ufpe.br

Interrupção - INT 21h

• Finalização do programa.

– Chama-se com: AH = 4Ch.

– Exemplo.: mov ax,4c00h

int 21h ; Finalização do programa.

45

Page 46: Interface Hardware/Software Centro de Informática - UFPE Paulo Maciel prmm@cin.ufpe.br

Interrupção - INT 21h

• Cria um arquivo.– Chama-se com:

AH = 3Ch CX = atributo.

Bit Significado0 somente

leitura1 invisível2 sistema

…DS:DX apontam para o endereço que contem o caminho (string terminada por 0) e o nome do arquivo a ser criado.

– Retorno:CF = 0 e AX = Manipulador, se

sucesso.CF = 1 e AX = Código de erro,

caso contrário.

• EX.: fname db ´C:\MYDIR\MYFILE.DAT´,0 fhandle dw ?

mov ah,3chxor cx,cx; atributo normalmov dx,seg fnamemov ds,dxlea dx,fnameint 21hjc erromov fhandle,ax

46

Page 47: Interface Hardware/Software Centro de Informática - UFPE Paulo Maciel prmm@cin.ufpe.br

Interrupção - INT 21h

• Abrir arquivo– Chama-se com: AH = 3Dh AL = modo de acesso 0 – leitura 1 – escrita 2 – leitura e escrita … DS:DX apontam para o endereço

que contem o caminho (string terminada por 0) e o nome do arquivo a ser criado.

– Retorno: CF = 0 e AX = manipulador, se

sucesso.

CF = 1 e AX = código de erro, caso contrário.

• EX.: fname db ´C:\MYDIR\MYFILE.DAT´,0 fhandle dw ?

mov ah,3dh mov al,2; leitura e escrita mov dx,seg fname mov ds,dx lea dx,fname int 21h jc erro mov fhandle,ax

47

Page 48: Interface Hardware/Software Centro de Informática - UFPE Paulo Maciel prmm@cin.ufpe.br

Interrupção - INT 21h

• Fechar arquivo– Chama-se com:AH = 3Eh.BX = manipulador.

– RetornoCF = 0, se sucesso.CF = 1, caso contrário.

• EX.:fhandle dw ?

mov ah,3Ehmov bx,fhandle int 21hjc erro

48

Page 49: Interface Hardware/Software Centro de Informática - UFPE Paulo Maciel prmm@cin.ufpe.br

Interrupção - INT 21h

• Ler arquivo – Chama-se com:AH = 3Fh.BX = manipulador.CX = número de bytes a ser lido.DS:DX = endereço inicial do buffer.

– Retorno:

CF = 0, se sucesso. AX = bytes lidos.

CF = 1, caso contrário. AX = código de erro.

• Exemplo.:fhandle dw ?buff db 1024 dup(?)

mov ah,3Fhmov dx, seg buffmov ds,dxlea dx,buffmov bx,fhandlemov cx,1024int 21hjc erro

cmp ax,cx jl done

49

Page 50: Interface Hardware/Software Centro de Informática - UFPE Paulo Maciel prmm@cin.ufpe.br

Interrupção - INT 21h

• Escrever em arquivo– Chama-se com:

AH = 40h.

BX = manipulador.

CX = número de bytes a ser escrito.

DS:DX = endereço inicial do buffer.

– Retorno:

CF = 0, se sucesso. AX = bytes escritos.

CF = 1, caso contrário. AX = código de erro.

• EX.:fhandle dw ?buff db 1024 dup(1)

mov ah,40hmov dx, seg buffmov ds,dxlea dx,buffmov bx,fhandlemov cx,1024int 21hjc erro

cmp ax,cx jl done 50

Page 51: Interface Hardware/Software Centro de Informática - UFPE Paulo Maciel prmm@cin.ufpe.br

Interrupção - INT 21h

• Apaga arquivo– Chama-se com:

AH = 41hDS:DX apontam para o endereço que contem o caminho (string

terminada por 0) e o nome do arquivo a ser apagado.

– Retorno:CF = 0 , se sucesso.CF = 1 e AX = código

de erro, caso contrário.

• EX.:fname db ´C:\MYDIR\MYFILE.DAT´,0

mov ah,41hmov dx,seg fnamemov ds,dxlea dx,fnameint 21hjc erro

51

Page 52: Interface Hardware/Software Centro de Informática - UFPE Paulo Maciel prmm@cin.ufpe.br

Interrupção - INT 21h

• Posicionar Ponteiro de Arquivo

– Chama-se com:AH = 42h

BX = manipulador. AL = método de posicionamento. CX:DX = deslocamento.

– Retorno: CF = 0, se sucesso. DX:AX = nova

posição. CF = 1, caso contrário. AX = código de

erro.

– Método 0 - (absoluto) Começo do arquivo.

1 - Relativo a posição atual. 2 - (absoluto) Fim do arquivo.

• EX.:fhandle dw ?

mov ah,42h mov al,2h

mov bx,fhandlemov cx,0Mov dx,1024int 21hjc erro

52