Sistema Gráfico VGA. Sistema Gráfico VGA



Documentos relacionados
CAPÍTULO 2 CARACTERÍSTICAS DE E/S E PORTA PARALELA

Entradas/Saídas. Programação por interrupções Conceitos gerais Programação da porta série Transmissão

Capítulo 4. MARIE (Machine Architecture Really Intuitive and Easy)

A porta paralela. 1 - Introdução. 2- Modelos de porta paralela

Serial Paralela USB FireWire(IEEE1394)

Arquitetura de Computadores. Tipos de Instruções

Portas de Comunicação.

Interrupções. As interrupções são casos especiais de chamadas de procedimentos.

Universidade do Algarve Faculdade de Ciências e Tecnologia Área Departamental de Engenharia Electrónica e Computação

Escola Secundária de Emídio Navarro

Laboratório de Sistemas Processadores e Periféricos Lista de comandos de Assembly

Os 3 principais tipos de Instruções (INSTRUTION SET) dos up são:

Entrada e Saída. Interface entre periféricos, processador e memória. Fonte: Minho - Portugal 1

Uso de interrupções de BIOS/DOS

EEL Microprocessadores. Parâmetros e Variáveis Locais 4/5/2010. Capítulo 7 Livro Ziller. Prof. Raimes Moraes GpqCom EEL UFSC

Entradas/Saídas. Programação por espera activa Programação por interrupções

Dispositivos de Entrada e Saída

Primeiros "computadores" digitais. Execução de um programa. Consolas. Primórdios dos computadores. Memória interna. Computadores com memória interna

Gerência de Entrada/Saída

Modelo Genérico de Módulo de E/S Grande variedade de periféricos

CARTÃO INTERFACE PARALELO PCI

Protótipo de Software e Hardware para Aquisição de Dados.

BARRAMENTO DO SISTEMA

Portas Paralelas e Seriais IEEE 1284, RS 232, USB e IEEE 1394 (Firewire) Porta Paralela no PC

Arquitetura de Computadores Arquitetura de entrada e saída

Projecto de uma placa com DIP-Switches e LCD com ligação à placa DETIUA

Estrutura e funcionamento de um sistema informático

Porta Paralela. Fabricio Ferrari. Maio Universidade Federal do Pampa, Bagé, RS, Brazil

Figura 1 - O computador

Sistemas Operativos. Sumário. Estruturas de sistemas de computação. ! Operação de um sistema de computação. ! Estruturas de E/S

Entrada e Saída. Prof. Leonardo Barreto Campos 1

Sistemas Operativos I

Linguagem de Montagem 2. Operações e Operandos

Programação ao nível da máquina. Operações lógicas e aritméticas

ULA Sinais de Controle enviados pela UC

Instruções funcionamento em 16 bits. 8B bytes W Mod 000 r/m

ARQUITETURA DE COMPUTADORES

Conjunto de instruções do CPU. Arquitectura de um computador. Definição das instruções (1) Definição das instruções (2)

Periféricos e Interfaces Ano lectivo 2003/2004 Docente: Ana Paula Costa. Aula Teórica 20

Organização de Computadores. (Aula 5) Entrada/Saída

Arquitectura de Computadores

Introdução à programação em linguagem assembly

Sistemas Operacionais Entrada / Saída. Carlos Ferraz (cagf@cin.ufpe.br) Jorge Cavalcanti Fonsêca (jcbf@cin.ufpe.br)

O hardware é a parte física do computador, como o processador, memória, placamãe, entre outras. Figura 2.1 Sistema Computacional Hardware

7. A pilha e subrotinas

Inicialmente a IBM (1981) disponibilizou uma porta paralela para ligação a impressoras (lentas)

Entrada e Saída (Input/Output I/O) Organização de Computadores (Aula 5) Entrada/Saída. Diferentes Tipos de Dispositivos (1)

Escola Secundária de Emídio Navarro

Display de 7. PdP. Autor: Tiago Lone Nível: Básico Criação: 16/12/2005 Última versão: 18/12/2006. Pesquisa e Desenvolvimento de Produtos

7. Instruções lógicas, de deslocamento e de rotação

INT 5h - Print screen Modo Resolução Caract. INT 10h - Vídeo INT 10h - Vídeo

Organização e Arquitetura de Computadores

Arquitectura de Computadores

Professor Marcelo Josué Telles Porta LPT, programação, componentes eletrônicos, sistema binário...

Sistemas Operacionais

Estrutura de um Computador

Comunicação Paralela Meio de transferência de dados onde a informação é transferida os 8 bits ao mesmo tempo.

Trabalho Prático Nº3 Porta Paralela

Universidade de São Paulo

3. Arquitetura Básica do Computador

AUTOMAÇÃO DE CÚPULA DE OBSERVATÓRIO ASTRONÔMICO

Manual Técnico Interface Modbus

1345 Arquitectura de Computadores

FUNDAÇÃO ESCOLA TÉCNICA LIBERATO SALZANO VIEIRA DA CUNHA CURSO TÉCNICO EM ELETRÔNICA 3ª SÉRIE DO ENSINO MÉDIO Turma 4323 Trabalho Trimestral de Física

Versão Portuguesa. Introdução. Conteúdo da caixa. Especificações. PU001 Sweex 1 Port Parallel PCI Card

Componentes básicos de um sistema computacional. Cap. 1 (Stallings)

Gerenciamento de Entrada e Saída Hélio Crestana Guardia e Hermes Senger

8. Instruções de multiplicação e divisão

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

Organização Básica do Computador

ENTRADA E SAÍDA (I/O)

Seu manual do usuário EPSON LQ-630

Unidade Central de Processamento (CPU) Processador. Renan Manola Introdução ao Computador 2010/01

Entradas Digitais. PdP. Autores: Luís Fernando Patsko e Tiago Lone Nível: Intermediário Criação: 27/12/2005 Última versão: 18/12/2006

Sistemas Operacionais. Prof. M.Sc. Sérgio Teixeira. Aula 04 - Concorrência. Cursos de Computação

Arquitetura e Organização de Computadores I

Visão Geral de Sistemas Operacionais

CAPÍTULO 5. INTERFACES PARA PERIFÉRICOS DE ARMAZENAMENTO INTERFACES DIVERSAS: FIREWIRE, SPI e I 2 C INTERFACES COM O MUNDO ANALÓGICO

Introdução. INF1005 Programação I 33K Prof. Gustavo Moreira gmoreira@inf.puc-rio.br

Laboratório de Sistemas Processadores e Periféricos

Binária. Introdução à Informática. Introdução à Informática. Introdução à Informática. Introdução à Informática. Bit. Introdução à Informática

Introdução aos Computadores

ARQUITETURA DE COMPUTADORES

Capítulo 14. Vamos discutir neste capítulo uma pequena miscelânea de interfaces encontradas nos PCs: paralela, serial, IRDA, teclado e mouse.

ENTRADA E SAÍDA DE DADOS

2 - Processadores. CEFET-RS Curso de Eletrônica. Organização de Computadores. Profs. Roberta Nobre & Sandro Silva

Manual do utilizador Ethernet

EEL Microprocessadores

Prof. Sandrina Correia

Linguagem de Montagem Funcionamento de CPU e Assembly Rudimentar

SISTEMAS DIGITAIS. Memórias. Prof. Guilherme Arroz Prof. Carlos Sêrro Alterado para lógica positiva por Guilherme Arroz.

ORGANIZAÇÃO BÁSICA DE COMPUTADORES E LINGUAGEM DE MONTAGEM

Arquitetura de Computadores - Revisão -

Copyright 2011 VW Soluções

Gerenciador de Boot Simples

1. Os caracteres (p.ex: a, A, 8,!, +, etc) são representados no computador através da codificação ASCII (American Standard Code for

Atividade prática: Rodando o programa SOMA

Funcionamento básico de um computador

Projecto Final de Curso 2004/2005 RESPIFE. Reengenharia de Sistema Produtivo Integrado para Fins Educacionais. Guia do Robot

Copyright 2013 VW Soluções

Transcrição:

Sistema Gráfico VGA Rotinas Vídeo VGA: Modo Texto (03h) Procedure SetMode(M:Byte);Far;Assembler; Solução. (Nota serve para modo gráfico) Procedure ClearTextScreen(Atr:Byte);Far;Assembler; Solução Procedure CursorXY(Col,Lin:Byte);Far;Assembler; Solução Procedure WriteStr(x,y:byte;s:string;atr:Byte);Far;Assembler; Solução Procedure SaveScreen(P:Pointer);Far;Assembler; Solução 151 Sistema Gráfico VGA Rotinas Vídeo VGA: Modo Texto (03h) Procedure SetMode(M:Byte);Far;Assembler; push AX mov ah,00h mov al,m t 10h pop ax 152

Sistema Gráfico VGA Rotinas Vídeo VGA: Modo Texto (03h) Procedure ClearTextScreen(Atr:Byte);Far;Assembler; push ax push cx push di push es mov al,' ' {coloca em al=<space>} mov ah,atr {coloca em ah=atributos} mov cx,0b800h {es:[di] = Endereco destino} mov es,cx mov di,0 cld {clear Flag DF Direction = incrementacao automatica} mov cx,80*25 {cx=numero de words a copiar} rep stosw {repete cx vezes mov es:[di],ax; add di,2} pop es pop di pop cx pop ax 153 Sistema Gráfico VGA Rotinas Vídeo VGA: Modo Texto (03h) Procedure CursorXY(Col,Lin:Byte);Far;Assembler; push ax push bx push dx mov bh,0 mov dl,col mov dh,lin mov ah,02h {funcao 02h = set cursor} t 10h pop dx pop bx pop ax 154

Sistema Gráfico VGA Rotinas Vídeo VGA: Modo Texto (03h) Procedure WriteStr(x,y:byte;s:string;atr:Byte);Far;Assembler; {Escreve a string s na posicao x,y com atributos atr Nao altera a posicao actual do cursor} push ds push es push si push di push ax push cx {icializa ds:[di]= primeira posicao na memoria video} mov ax,0b800h mov ds,ax mov al,160 mul y {ax=160*y} mov cl,x shl cl,1 {cl=2*x} xor ch,ch add ax,cx {ax=160*y+2*x} mov di,ax {ds:[di] aponta para a primeira posicao na memoria video} les si,s {es:[si]=inicio da string} mov cl,es:[si] {cl=numero de caracteres} mov ah,atr {coloca em ah=atributos} @While: cmp cl,0 je @EndWhile inc si mov al,es:[si] {al = caracter a visualizar} mov [di],ax {copia al+ah (caracter + atributo) para memoria video} add di,2 dec cl jmp @While @EndWhile: pop cx pop ax pop di pop si pop es pop ds 155 Sistema Gráfico VGA Rotinas Vídeo VGA: Modo Texto (03h) Procedure SaveScreen(P:Pointer);Far;Assembler; {salvaguarda o conteudo da memoria video na variavel cujo endereco esta armazenado em P} push ds push es push si push di push cx {ds:[si] = inicio da memoria video} mov cx,0b800h mov ds,cx xor si,si {es:[di] = destino da copia = endereco armazenado em P} les di,p cld {clear Flag DF Direction = incrementa automaticamente} mov cx,80*25 {cx=numero de words a copiar} rep movsw {repete cx vezes mov word ptr es:[si], word ptr ds:[di] add di,2 add si,2} pop cx pop di pop si pop es pop ds 156

Sistema Gráfico VGA Rotinas Vídeo VGA: Modo Gráfico (13h) Procedure ClearDisplay(Cor:Byte);Far;Assembler; Solução Procedure Plot(X,Y:Word;Cor:Byte);Far;Assembler; Solução 157 Sistema Gráfico VGA Rotinas Vídeo VGA: Modo Gráfico (13h) Procedure ClearDisplay(Cor:Byte);Far;Assembler; push ax push cx push di push es {es:[di] = Endereco destino = inicio da memoria video} mov cx,0a000h mov es,cx xor di,di mov al,cor {al=cor} cld {Clear Flag DF Direction = crementa automaticamente} mov cx,320*200 {cx=numero de bytes a transferir} rep stosb {repete cx vezes mov es:[di],al ; inc di} pop es pop di pop cx pop ax 158

Sistema Gráfico VGA Rotinas Vídeo VGA: Modo Gráfico (13h) Procedure Plot(X,Y:Word;Cor:Byte);Far;Assembler; {Coloca pixel de coordenadas X,Y numa determinada cor} push es push di push ax {converte coordenada Y} mov ax,199 sub ax,y mov Y,ax {es:[di] = endereco destino} mov ax,0a000h mov es,ax mov ax,320 mul Y {ax=320*y} add ax,x {ax=320*y+x} mov di,ax {es:[di] = endereco do pixel de coordenadas X,Y} mov al,cor {al=cor} mov es:[di],al pop ax pop di pop es 159 Arquitectura de Entradas/Saídas A organização do sistema de entradas e saídas num computador é um aspecto de central importância na definição da sua arquitectura. Como já foi anteriormente referido, um computador está organizado em torno de um sistema de barramentos que permite ao processador trocar informação com a memória e com todos os periféricos do sistema. Globalmente essa arquitectura está representada na figura seguinte: 160

A ligação dos periféricos é, na maior parte dos casos, assegurada por um módulo que pode assumir diversos graus de complexidade, denominado interface. A interface existe para isolar o processador das particularidades dos periféricos. De entre as funcionalidades pedidas à interface, podem ser referidas, nesta fase, as seguintes: Promover as adaptações necessárias do ponto de vista físico, nomeadamente ao nível das tensões e correntes envolvidas na comunicação entre o processador e os periféricos. Permitir esconder ao processador a velocidade dos periféricos, tipicamente mais baixa que a do processador. 161 Descodificar os endereços presentes no respectivo barramento por forma a identificar uma transferência de dados que envolve o periférico a que está ligada. Controlar o periférico nos casos em que podem existir vários modos de funcionamento. Controlar a comunicação física com o periférico através de lógica adequada, diminuindo, assim as tarefas a desempenhar pelo processador. Sinalizar ao processador, através do barramento de controlo, a presença de dados provenientes do periférico ou a disponibilidade deste para receber dados através do sistema de interrupções do computador. 162

A estrutura de uma interface está ilustrada na figura seguinte: 163 No caso de periféricos uni-direccionais, isto é, só de saída ou entrada, como uma impressora, ou um rato, a interface possui um registo onde o processador escreve os dados a enviar para o periférico ou onde lê os dados provenientes do periférico. Como é óbvio em periféricos bi-direccionais, como por exemplo, um modem, é de esperar a existência de dois registos, um em que o processador escreve os dados a enviar e outro em que o processador lê os dados recebidos. Estes registos, a unidade mais simples de entrada/saída endereçável pelo processador, têm o nome de portos. 164

Muitas interfaces, possuem, para além dos portos de dados, isto é, os portos destinados a transferir dados, alguns outros portos onde o processador pode escrever informações de controlo que permitem configurar determinados aspectos do funcionamento do periférico ou da comunicação com ele, bem como ler informação sobre o estado do periférico, da ligação ou da própria interface. Trata-se, respectivamente, de portos de controlo e portos de estado. Cada um destes portos é naturalmente acedido através de endereços diferentes. 165 Um exemplo: A Porta Paralela. A porta paralela é uma interface de comunicação entre o computador e um periférico. Quando a IBM criou o seu primeiro PC a esta porta estava destinado a ligação de uma impressora. Actualmente são vários os periféricos que utilizam (utilizavam) esta porta para enviar e receber dados. 166

Modelos de Porta Paralela Transmissão Unidireccional A porta paralela SPP (Standard Parallel Port) pode chegar a uma taxa de transmissão de dados de 150kB/s. Comunica-se com a CPU utilizando um BUS de dados de 8bits. Para a transmissão de dados entre periféricos são usados 4 bits de cada vez. Transmissão Bidireccional A porta EPP (Enhanced Parallel Port) chega a atingir uma taxa de transferência de 2MB/s. Para atingir esta velocidade é necessário um cabo especial. Comunica com a CPU atravé de um BUS de dados de 32bits. Para a transmissão de dados entre periféricos são usados 8bits de cada vez; A porta ECP (Enhanced Capabilities Port) tem as mesmas características que a EPP utilizando, porém, acesso directo à memória (DMA). Utiliza também um buffer FIFO de 16 bytes. 167 Porta Paralela: Extensão do cabo A extensão do cabo é no máximo 8m. Na prática utiliza-se um cabo com extensão menor. Quanto maior a extensão do cabo, maior é a interferência na transmissão dos dados. 168

Porta Paralela: Endereços O computador nomeia as portas chamando-as de LPT1, LPT2, LPT3, etc.. A porta física padrão é a LPT1 sendo o seu endereço base, normalmente, o 378h. Nome da porta Endereço de memória Endereço da porta Descrição LPT1 0000:0408 378 hexa 888 decimal End. Base LPT2 0000:040A 278 hexa 632 decimal End. Base 169 Porta Paralela: Registos Supondo uma impressora ligada à porta, os registos terão nomes sugestivos: Nome Endereços LPT1 Endereços LPT2 Descrição Registo de Dados 378 h 278 h Envia uma byte para a impressora Registo de Estado 379 h 279 h Lê o estado da impressora Registo de Controlo 37A h 27Ah Envia dados de Controlo para a impressora 170

Porta Paralela: Conectores O conector DB25 As figuras abaixo mostram um conector padrão com a identificação dos pinos. 171 Porta Paralela: Conectores Esquema de Funcionamento do DB25 em modo SPP 172

Porta Paralela: Conectores O conector centronics de 36 pinos. Significado de cada pino do conector Centronics 36 pinos Número do Pino 1 2 ao 9 10 11 12 13 14 15 ao 18 19 ao 30 31 32 33 34 a 35 36 Descrição Strob Dados (D0...D7) Ack Busy Paper End Select Auto Feed conectato GROUND it Error GROUND conectato Select 173 Porta Paralela: Distribuição dos Bits de E/S por cada Registo As operações de transferência de e sobre registos é feita sempre com 8 bits de dados, sendo a distribuição destes a seguinte (SPP): Data Register (Endereço Base) Bit 0 1 2 3 4 5 6 7 Pin: D-sub 2 3 4 5 6 7 8 9 Sinal (Nome) Data bit 0 Data bit 1 Data bit 2 Data bit 3 Data bit 4 Data bit 5 Data bit 6 Data bit 7 Direcção IN/ vertido por Hardware? Pin: Centro. 2 3 4 5 6 7 8 9 174

Porta Paralela: Distribuição dos Bits de E/S por cada Registo Status Register (Endereço Base + 1) Bit 0 Pin: D-sub Sinal (Nome) Reservado Direcção /out vertido por Hardware? Pin: Centro. 1 Reservado 2 IRQ(not) Sim 3 15 nerror (nfault) 32 4 13 Select 13 5 12 PaperEnd 12 6 10 nack 10 7 11 Busy Sim 11 175 Porta Paralela: Distribuição dos Bits de E/S por cada Registo Control Register (Endereço Base + 2) Bit 0 1 2 3 4 5 6 7 Pin: D-sub 1 14 16 17 Sinal (Nome) nstrobe nautolf nit (Reset) nselection Enable IRQ Via Ack Enable bi-direc. usado usado Direcção /out / / / / / / vertido por Hardware? Sim Sim Sim Pin: Centro. 1 14 31 36 176

Porta Paralela: Exemplo de acesso em line Assembly Program EX_LPT; var s:string; Procedure Delay(N:word);near;assembler; {introduz um tempo de espera proporcional a N} push cx mov cx,n @Delay: loop @Delay pop cx Function WriteLPT1(s:String):Boolean;Near;Assembler; {Envia string para o interface LPT1 Devolve TRUE se bem sucedido Devolve FALSE se erro (Time atingido)} var Time:byte; push es push si push cx push dx {obtem o endereco base de IO do porto LPT1 na posicao de memoria 0040h:0008h} mov ax,0040h mov es,ax mov dx,es:[0008h] {dx=end. IO de LPT1} les si,s {es:[si] = endereco da string} mov cl,es:[si] @While: cmp cl,0 je @EndWhile inc si mov al,es:[si] {envia caracter para registo de dados} out dx,al {testa se b7(bsy) do registo de dados=1} inc dx mov Time,0FFh {Numero de tentativas = 255} @Wait: in al,dx {leitura do registo de estado} test al,10000000b jnz @ActivaStrobe {b7=1? <=>not printer busy/error/off-line} dec Time {Numero de tentativas} jnz @Wait {Time alcancado => Erro} mov al,false jmp @EndFunc @ActivaStrobe: {activa sinal STR (strobe)} inc dx in al,dx or al,00000001b out dx,al mov ax,1 push ax call delay {introduz tempo de espera} {inactiva sinal STR (strobe)} in al,dx and al,11111110b out dx,al sub dx,2 {dx = endereco base} dec cl jmp @While @EndWhile: mov al,true {escrita em LPT1 bem sucedida} @EndFunc: pop dx pop cx pop si pop es begin write('string para LPT1?');Readln(s); If WriteLPT1(s+chr(13)) Then Writeln ('OK') Else Writeln('Erro ao escrever na LPT1'); readln; end. 177