Interface Hardware Software - PowerPoint PPT Presentation

1 / 27
About This Presentation
Title:

Interface Hardware Software

Description:

Monitoria Diogo de Lima Lages - dll Lucio Paulo de Souza Ribeiro- lpsr – PowerPoint PPT presentation

Number of Views:39
Avg rating:3.0/5.0
Slides: 28
Provided by: bios87
Category:

less

Transcript and Presenter's Notes

Title: Interface Hardware Software


1
Interface Hardware Software
  • Monitoria
  • Diogo de Lima Lages - dll
  • Lucio Paulo de Souza Ribeiro- lpsr

2
Revisão
Registradores de propósito geral
Servem para armazenar dados eles são divididos em
Obs. Algumas instruções
necessitam de registradores específicos como rep
e loop
Acumulador Acumulador Acumulador
EAX AH AL
Source Index Source Index
ESI SI

EBX BH BL
Destiny Index Destiny Index
EDI DI
Contador Contador Contador
ECX CH CL
Stack base Pointer Stack base Pointer
EBP BP
Dados Dados Dados
EDX DH DL
Stack Pointer Stack Pointer
ESP SP
3
Revisão
Registradores Segmentos
Servem para armazenar determinados
segmentos


Code Segment
CS
Guarda o segmento de código
Guarda o segmento da pilha

Armazena o segmento de dados
Segmento extra (utilizado por algumas instruções)
Segmento extra (utilizado por algumas instruções)
Segmento extra (utilizado por algumas instruções)
Stack Segment
SS
Data Segment
DS
Extra Segment
ES
Extra Segment
FS
Extra Segment
GS
4
Revisão
Registradores de Pilha
Servem para armazenar determinados
segmentos

Obs. Algumas instruções
necessitam de operadores específicos como rep e
loop
Guarda o segmento de pilha
Guarda o endereço atual da pilha

Utilizado para recuperar paramentros passados através da pilha
Stack Segment
SS
Stack Pointer Stack Pointer
ESP SP
Base Pointer Base Pointer
EBP BP
5
Revisão
Registradores Específicos
Registradores que tem funcionalidade
padrão Obs. Só pode ser alterado por
operações de pulo como jmp,call
Guarda o deslocamento em relação a base (CS).Aponta para instrução a ser executada
Instruction Pointer Instruction Pointer
EIP IP
6
Revisão
Modo Real
SEG DESL.
F0000 0000-FFFF
E0000 0000-FFFF
D0000 0000-FFFF
C0000 0000-FFFF
B0000 0000-FFFF
A0000 0000-FFFF
90000 0000-FFFF
80000 0000-FFFF
70000 0000-FFFF
60000 0000-FFFF
50000 0000-FFFF
40000 0000-FFFF
30000 0000-FFFF
20000 0000-FFFF
10000 0000-FFFF
00000 0000-FFFF
? Fornece apenas 1 MB (aproximadamente) de
memória acessível . ? Não fornece proteção para
os segmentos ? Endereço físico variando de
00000-FFFFF ? Memória dividida em segmentos ?
Cada segmento possui 64 KB ? Possui 16
Segmentos 1 - CS F000 IP 8378 2 4 Shift
Left em CS (Lógico) 3 F0000 8378 4 F8378
(Endereço Físico) 1048.576 bytes
Endereço Físico
7
Revisão
Modelos de memória
Modelo Segmento de dados Segmento de Código
TINY UM UM
SMAL UM UM
MEDIUM UM VÁRIOS
COMPACT VÁRIOS UM
LARGE VÁRIOS VÁRIOS
HUGE VÁRIOS VÁRIOS
FLAT UM UM
Obs. No modelo tiny o segmento de dados e o de
código apontam para o mesmo local
8
Tasm/Tlink/Td
Tasm
? Montador desenvolvido para borlard ? Serve para
transformar o código assembler em código objeto ?
Adiciona algumas informações no código fonte
(como símbolos para debug) ? Fornece algumas
abstrações para facilitar o desenvolvimento em
assembly como criação de struct .
Tlink
? LinkEditor desenvolvido pela borlard ? Serve
para transformar código objeto em código de
máquina ? Adiciona algumas informações no código
fonte (como símbolos para debug) ? Adiciona
códigos externos
9
Tasm/Tlink/Td
Td
?Debugador para código em assembly ?Fácil
manipulação ? Permite visualizar o código sendo
executada instrução por instrução ? Permite
visualizar estado dos processador em tempo de
execução ? Fornece uma forma mais rápida para
encontrar erros
10
Montando e Linkeditando
Montando
Tasm /zi arq1.asm arq1.o -gt
Acrescenta informações para debug
Linkeditando
Tlink /v arq1.o
-gt Acrescenta informações para debug
Debugando
Td arq1.exe
Mais informações
Tasm /? Tlink
11
Usando TD
Funcionalidade Básicas
Caminho Função
FILE -gt OPEN Seleciona o arquivo a ser aberto
VIEW-gtBREAKPOINTS Visualiza breakpoints
VIEW-gtVARIABLES Visualiza variáveis
VIEW-gtREGISTER Visualiza registradores
VIEW-gtCPU Visualiza informações sobre processador
VIEW-gtWATCH Visualiza watches
VIEW-gtDUMP Visualiza memória
VIEW-gtNUMERIC PROCESSOR Visualiza algumas informações sobre o processador de ponto flutuante
RUN-gtTrace INTO /F7 Executa instrução por instrução
12
Usando TD
Adicionando Breakpoint
Deixe o cursor na linha desejada e aperte F2.
13
Prática Parte I
Material
Pacote com ajuda,montador,linkeditor e debug
http//www.cin.ufpe.br/dll
14
Código em assembly
Estrutura básica
.model small modelo de memória a ser
usado .stack Define o segmento de
pilha .data Define segmento de
dados .code Define segmento de código
mov ax,_at_data DS aponta para o segmento de
dados mov ds,ax
mov ax, 4c00h AH Função a ser
chamada int 21h Chama SO para executar
função requisitada end
15
Código em assembly
Declarando 1 byte/1 word / 2 words/4words
Nome db value Nome dw value Nome dd value Nome dq
value
.model small modelo de memória a ser
usado .stack Define o segmento de
pilha .data Define segmento de dados
meng_1 db 0 meng_2 dw FF meng_3 dd FFFF
meng_4 dq FFFFFFFF .code Define segmento
de código mov ax,_at_data DS aponta para o
segmento de dados mov ds,ax
mov ax, 4c00h AH
Função a ser chamada int 21h Chama SO para
executar função requisitada end
16
Código em assembly
Alocando 1 byte/1 word / 2 words/4 words
Nome db tamanho DUP(conteudo) Nome dw tamanho
DUP(conteudo) Nome dd tamanho DUP(conteudo) Nome
dq tamanho DUP(conteudo)
.model small modelo de memória a ser
usado .stack Define o segmento de
pilha .data Define segmento de dados
meng_1 db 2 dup(?) meng_2 dw 3 dup(0)
meng_3 dd 4 dup(3) meng_4 dq 2
dup(F) .code Define segmento de código
mov ax,_at_data DS aponta para o segmento
de dados mov ds,ax
mov ax, 4c00h AH Função a
ser chamada int 21h Chama SO para executar
função requisitada end
17
Código em assembly
Declarando uma procedure
.model small modelo de memória a ser
usado .stack Define o segmento de
pilha .data Define segmento de
dados .code Define segmento de código
mov ax,_at_data DS aponta para o segmento de
dados mov ds,ax call Func_1
mov ax, 4c00h AH
Função a ser chamada int 21h Chama SO
para executar função requisitada Func_1 proc
push bx mov bx,ax pop bx ret Func_1 endp end
18
Porta Paralela
Porta Paralela
-gt Permite a comunicação com dispositivos
externos -gt Permite que 8 bits de dados possam
ser enviados ou recebidos paralelamente .
Status (379 h ou 279 h ou 3bdh )
-gt Permite a entrada de 5 bits em paralelo (Mundo
-gt Porta)
Dados (378 h ou 278 h ou 3bch)
-gt Permite a saida de 8 bits em paralelo (Porta
-gt Mundo) -gt Em modo bidirecional suporta a
entrada/saida de dados não pode gerar exceção
Controle (37A h ou 27A h ou 3beh )
-gt Permite a saida de 4 bits (Porta-gt Mundo)
Pino /11
19
Porta Paralela
DB- Fêmea
379h 279h
378h 278h
37Ah 27Ah
20
Porta Paralela
Escrita na porta paralela por interrupção 17h
Parâmetros AH 00 (Número do serviço
disponibilizado pela int 17) AL Dado que
deseja enviar pela paralela DX Porta a ser
usada (geralmente é 0) Retorno AH Vai conter
dados lidos da porta de status (Só importa os 5
bits mais significativos) 1110121315
Leitura na porta paralela por interrupção 17h
Parâmetros AH 02 (Número do serviço
disponibilizado pela int 17) DX Porta a ser
usada (geralmente é 0) Retorno AH -gt Vai
conter os dados lidos da porta de status (Só
importa os 5 bits mais significativos) 111012
1315
21
INPUT/OUTPUT
Função
? Mecanismo utilizado para se comunicar com
outros dispositivos internos ou externos ao
computador como controlador de interrupção ou
ainda usar a porta paralela para se comunicar com
dispositivo externo . ? A arquitetura do
pentium permite que os dispositivos possam ser
acessados dos seguintes modos
? ? ? Pode se comunicar através de portas
especificas . Utiliza as instruções IN/OUT para
se comunicar
? ? ? Pode se comunicar através de memória
mapeada . Utilizada instruções como MOV para se
comunicar com dispositivo
I/O PORT ADRESSING
22
Instruções IN/OUT
IN/OUT
?São instruções que permitem a comunicação com
dispositivos externos através de portas ? As
portas podem ser de entrada de saida ou ainda
bidirecional .
IN
?Permite a leitura através de uma portas
determinada ex. in al,dx
Out
?Permite enviar dados através de uma porta
determinada ex. out dx,al
23
Instruções IN/OUT
Exemplo IN/OUT
?Faz a leitura da porta 0x379(status) e envia
para porta 0x378(dados)
.model small modelo de memória a ser
usado .stack Define o segmento de
pilha .data Define segmento de
dados .code Define segmento de código
mov ax,_at_data DS aponta para o segmento de
dados mov ds,ax call Func_1
mov ax, 4c00h
AH Função a ser chamada int 21h Chama
SO para executar função requisitada Func_1
proc Push dx Push ax mov dx,379h Porta
que vai ser lida in al,dx
Instrução para efetuar a leitura Mov al, ffH
mov dx,378h Porta onde vai ser
escrito o dado out dx,al Instrução para
efetuar a escrita Pop ax Pop dx ret Func_1
endp end
24
Exercícios - 1
1 ) Escreva um programa em assembly capaz de
enviar enviar o byte 0xF4 para porta (0x378) .
(Visualize o display)
25
Exercícios - 2
2 ) Escreva um programa em assembly capaz de
receber 5 bits através da porta paralela e
mostre esse conteúdo na tela . Use a porta
0x0379
26
Exercícios - 3
3 ) Crie agora um programa que envie um byte 0x00
até 0xFF usando a porta paralela . Use a porta
(0x378)
27
Exercícios - 4
4 ) Escreva um programa em assembly que modifica
os leds da protoboard somente quando um dos 5
bits de entrada forem modificados
Write a Comment
User Comments (0)
About PowerShow.com