Interface Hardware Software

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

description

Interface Hardware Software. Monitoria Diogo de Lima Lages - dll Lucio Paulo de Souza Ribeiro - lpsr. 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. Revisão. - PowerPoint PPT Presentation

Transcript of Interface Hardware Software

Page 1: Interface Hardware Software

Interface Hardware Software

Monitoria

Diogo de Lima Lages - dll

Lucio Paulo de Souza Ribeiro- lpsr

Page 2: Interface Hardware Software

Revisão

Registradores de propósito geralRegistradores 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

EAX AH AL

EBX BH BL

Contador

ECX CH CL

Dados

EDX DH DL

Source Index

ESI SI

Destiny Index

EDI DI

Stack base Pointer

EBP BP

Stack Pointer

ESP SP

Page 3: Interface Hardware Software

Revisão

Registradores SegmentosRegistradores Segmentos

Servem para armazenar determinados segmentos:

Code Segment

CS

Stack Segment

SS

Data Segment

DS

Extra Segment

ES

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)

Extra Segment

FS

Extra Segment

GS

Page 4: Interface Hardware Software

Revisão

Registradores de PilhaRegistradores de Pilha

Servem para armazenar determinados segmentos:

Obs.: Algumas instruções necessitam de operadores específicos como rep e loop

Stack Segment

SS

Stack Pointer

ESP SP

Base Pointer

EBP BP

Guarda o segmento de pilha

Guarda o endereço atual da pilha

Utilizado para recuperar paramentros passados através da pilha

Page 5: Interface Hardware Software

Revisão

Registradores EspecíficosRegistradores Específicos

Registradores que tem funcionalidade padrão

Obs.: Só pode ser alterado por operações de pulo como jmp,call

Instruction Pointer

EIP IP

Guarda o deslocamento em relação a base (CS).Aponta para instrução a ser executada

Page 6: Interface Hardware Software

Revisão

Modo RealModo Real

► 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 : 83782 – 4 Shift Left em CS (Lógico)3 – F0000 + 83784 – F8378 (Endereço Físico)

* 1048.576 bytes

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

Endereço Físico Endereço Físico

Page 7: Interface Hardware Software

Revisão

Modelos de memóriaModelos 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

Page 8: Interface Hardware Software

Tasm/Tlink/Td

TasmTasm

Tlink Tlink

► 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 .

► 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

Page 9: Interface Hardware Software

Tasm/Tlink/Td

TdTd

►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

Page 10: Interface Hardware Software

Montando e Linkeditando

Td arq1.exe

MontandoMontando

Tasm /zi arq1.asm arq1.o -> Acrescenta informações para debug

LinkeditandoLinkeditando

DebugandoDebugando

Tlink /v arq1.o -> Acrescenta informações para debug

Mais informaçõesMais informações

Tasm /?Tlink

Page 11: Interface Hardware Software

Usando TD

Funcionalidade BásicasFuncionalidade Básicas

Caminho Função

FILE -> OPEN Seleciona o arquivo a ser aberto

VIEW->BREAKPOINTS Visualiza breakpoints

VIEW->VARIABLES Visualiza variáveis

VIEW->REGISTER Visualiza registradores

VIEW->CPU Visualiza informações sobre processador

VIEW->WATCH Visualiza watches

VIEW->DUMP Visualiza memória

VIEW->NUMERIC PROCESSOR Visualiza algumas informações sobre o processador de ponto flutuante

RUN->Trace INTO /F7 Executa instrução por instrução

Page 12: Interface Hardware Software

Usando TD

Adicionando BreakpointAdicionando Breakpoint

Deixe o cursor na linha desejada e aperte F2.

Page 13: Interface Hardware Software

Prática – Parte I

Material :Material :

Pacote com ajuda,montador,linkeditor e debug: http://www.cin.ufpe.br/~dll

Page 14: Interface Hardware Software

Código em assembly

Estrutura básicaEstrutura 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,@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 requisitadaend

Page 15: Interface Hardware Software

Código em assembly

Declarando 1 byte/1 word / 2 words/4wordsDeclarando 1 byte/1 word / 2 words/4words

.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,@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 requisitadaend

Nome db valueNome dw valueNome dd valueNome dq value

Page 16: Interface Hardware Software

Código em assembly

Alocando 1 byte/1 word / 2 words/4 wordsAlocando 1 byte/1 word / 2 words/4 words

.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,@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 requisitadaend

Nome db tamanho DUP(conteudo)Nome dw tamanho DUP(conteudo)Nome dd tamanho DUP(conteudo)Nome dq tamanho DUP(conteudo)

Page 17: Interface Hardware Software

Código em assembly

Declarando uma procedureDeclarando 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,@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 retFunc_1 endpend

Page 18: Interface Hardware Software

Porta Paralela

Porta ParalelaPorta Paralela

-> Permite a comunicação com dispositivos externos-> Permite que 8 bits de dados possam ser enviados ou recebidos paralelamente .

Status (379 h ou 279 h ou 3bdh )Status (379 h ou 279 h ou 3bdh )

Dados (378 h ou 278 h ou 3bch)Dados (378 h ou 278 h ou 3bch)

Controle (37A h ou 27A h ou 3beh )Controle (37A h ou 27A h ou 3beh )

-> Permite a entrada de 5 bits em paralelo (Mundo -> Porta) *

-> Permite a saida de 8 bits em paralelo (Porta -> Mundo)-> Em modo bidirecional suporta a entrada/saida de dados não pode gerar exceção

-> Permite a saida de 4 bits (Porta-> Mundo)* Pino /11

Page 19: Interface Hardware Software

Porta Paralela

DB- FêmeaDB- Fêmea

379h279h

378h278h

37Ah27Ah

Page 20: Interface Hardware Software

Porta Paralela

Escrita na porta paralela por interrupção 17hEscrita na porta paralela por interrupção 17hParâmetros :

AH = 00 (Número do serviço disponibilizado pela int 17)AL = Dado que deseja enviar pela paralelaDX = Porta a ser usada (geralmente é 0)

Retorno :AH = Vai conter dados lidos da porta de status (Só importa os 5 bits mais significativos)|11|10|12|13|15|

Leitura na porta paralela por interrupção 17hLeitura 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 -> Vai conter os dados lidos da porta de status(Só importa os 5 bits mais significativos)|11|10|12|13|15|

Page 21: Interface Hardware Software

INPUT/OUTPUT

FunçãoFunçã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 ADRESSINGI/O PORT ADRESSING

Page 22: Interface Hardware Software

Instruções IN/OUT

IN/OUTIN/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 . ININ

►Permite a leitura através de uma portas determinada ex.: in al,dx

OutOut

►Permite enviar dados através de uma porta determinada ex.: out dx,al

Page 23: Interface Hardware Software

Instruções IN/OUT

Exemplo IN/OUTExemplo 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,@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 requisitadaFunc_1 procPush dxPush ax mov dx,379h ;Porta que vai ser lida in al,dx ;Instrução para efetuar a leituraMov al, ffH mov dx,378h ;Porta onde vai ser escrito o dado out dx,al ;Instrução para efetuar a escritaPop axPop dx retFunc_1 endpend

Page 24: Interface Hardware Software

Exercícios - 1

1 ) Escreva um programa em assembly capaz de enviar enviar o byte 0xF4 para porta (0x378) . (Visualize o display)

Page 25: Interface Hardware Software

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

Page 26: Interface Hardware Software

Exercícios - 3

3 ) Crie agora um programa que envie um byte 0x00 até 0xFF usando a porta paralela . Use a porta (0x378)

Page 27: Interface Hardware Software

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