1 / 27

Interface Hardware Software

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.

monifa
Download Presentation

Interface Hardware Software

An Image/Link below is provided (as is) to download presentation Download Policy: Content on the Website is provided to you AS IS for your information and personal use and may not be sold / licensed / shared on other websites without getting consent from its author. Content is provided to you AS IS for your information and personal use only. Download presentation by click this link. While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server. During download, if you can't get a presentation, the file might be deleted by the publisher.

E N D

Presentation Transcript


  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

  3. Revisão RegistradoresSegmentos Servem para armazenar determinados segmentos:

  4. Revisão Registradores de Pilha Servem para armazenar determinados segmentos: Obs.: Algumas instruções necessitam de operadores específicos como rep e loop

  5. Revisão RegistradoresEspecíficos Registradores que tem funcionalidade padrão Obs.: Só pode ser alterado por operações de pulo como jmp,call

  6. Revisão Modo 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 : 8378 2 – 4 Shift Left em CS (Lógico) 3 – F0000 + 8378 4 – F8378 (Endereço Físico) * 1048.576 bytes EndereçoFísico

  7. Revisão Modelos de memória 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 -> Acrescenta informações para debug Linkeditando Tlink /v arq1.o -> Acrescenta informações para debug Debugando Td arq1.exe Mais informações Tasm /? Tlink

  11. Usando TD FuncionalidadeBásicas

  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 Estruturabá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 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,@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,@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 Declarandouma 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 ret Func_1 endp end

  18. Porta Paralela PortaParalela -> 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 ) -> Permite a entrada de 5 bits em paralelo (Mundo -> Porta) * Dados (378 h ou 278 h ou 3bch) -> 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 Controle (37A h ou 27A h ou 3beh ) -> Permite a saida de 4 bits (Porta-> Mundo) * Pino /11

  19. Porta Paralela DB- Fêmea 379h 279h 378h 278h 37Ah 27Ah

  20. Porta Paralela Escritanaportaparalelaporinterrupçã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) |11|10|12|13|15| Leituranaportaparalelaporinterrupçã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|

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

More Related