Arquitectura de Computadores (ACom)

Documentos relacionados
Arquitectura de Computadores (ACom)

INSTITUTO SUPERIOR TÉCNICO. Arquitectura de Computadores (ACom)

Arquitectura de Computadores 2011/2012 2º Semestre 1º Teste (A) - 11/04/2012

Introdução à Arquitetura de Computadores

Arquitectura de Computadores 2011/2012 2º Semestre 1º Teste - Repescagem - 27/06/2012

Arquitectura de Computadores 2007/2008 2º Semestre 1º Teste (A) - 30/04/2008. Folha de Respostas

Conjunto de Instruções (ISA) II

Arquitectura de Computadores (ACom)

Arquitectura de Computadores. Dicas e Truques do Assembly do P3

INSTITUTO SUPERIOR TÉCNICO. Arquitectura de Computadores (ACom)

Introdução à Arquitetura de Computadores

Arquitectura de Computadores

Arquitectura de Computadores

Arquitectura de Computadores (ACom)

Arquitectura de Computadores 2006/2007 2º Semestre Repescagem 1º Teste - 11/07/2007. Folha de Respostas

Arquitectura de Computadores 3º TESTE

Arquitectura de Computadores (ACom)

Arquitectura de Computadores

Introdução à Arquitetura de Computadores

INSTITUTO SUPERIOR TÉCNICO

Conjunto de Instruções (ISA) I

Arquitectura de Computadores (ACom)

Arquitectura de Computadores (ACom)

MICROPROCESSADORES 3º TESTE

Introdução à Arquitetura de Computadores

MICROPROCESSADORES. Unidade de Entrada/Saída (I/O) Nuno Cavaco Gomes Horta. Universidade Técnica de Lisboa / Instituto Superior Técnico

Arquitectura de Computadores (ACom)

Interrupções por hardware

Prova de Arquitectura de Computadores (21010) Data: 23 de Junho de 2009

FCA - Editora de Informática xv

Introdução à Arquitetura de Computadores

Introdução à Arquitetura de Computadores

Arquitectura de Computadores MEEC (2013/14 2º Sem.)

Arquitectura de Computadores MEEC (2013/14 2º Sem.)

SISTEMAS DIGITAIS (SD)

ELE Microprocessadores I

Aula 14 Funcionamento de Processadores (Visão específica)

Arquitectura de Computadores (ACom)

Arquitectura de Computadores (ACom)

Arquitectura de Computadores

Sistemas Digitais (SD) Memórias

Microprocessadores I ELE Conjunto de Instruções do Microprocessador 8085 Aula 9 - PILHA E SUBROTINAS -

2.1 Circuitos electrónicos analógicos Circuitos electrónicos digitais...29

CONJUNTO DE INSTRUÇÕES

7. A pilha e subrotinas

CONJUNTO DE INSTRUÇÕES DE UM PROCESSADOR (UCP)

Prof. Adilson Gonzaga

Prova de Arquitectura de Computadores (21010) Data: 5 de Fevereiro de 2009

SEL-614 MICROPROCESSADORES E APLICAÇÕES. Adilson Gonzaga

CONJUNTO DE INSTRUÇÕES DE UM PROCESSADOR (UCP)

SEL 0415 INTROD. À ORGANIZAÇÃO DE COMPUTADORES

Arquitectura de Computadores (ACom)

Arquitectura de Computadores 2007/2008 2º Semestre Repescagem 1º Teste - 03/07/2008

Microprocessadores 1º Ano - LECOM. Universidade do Minho Dept. De Electrónica Industrial

INSTITUTO POLITÉCNICO DE BRAGANÇA ESCOLA SUPERIOR DE TECNOLOGIA E DE GESTÃO. Sistemas Digitais II. Filipe Moreira

Manual do Simulador do Processador P3

Arquitetura de Um Processador I

2.º Teste de Introdução à Arquitetura de Computadores IST LEIC-Taguspark 1.º Semestre 2014/2015 Duração: 60 minutos 16 dezembro 2014

SSC510 Arquitetura de Computadores 1ª AULA

Microcontrolador Assembly UTFPR / DAELN Microcontroladores 1 Prof. Gabriel Kovalhuk

Interrupção. Prof. Adilson Gonzaga

14/3/2016. Prof. Evandro L. L. Rodrigues

ANEXO de Arquitectura de Computadores Informação sobre o Processador P3 Abril 2005

Arquitectura de Computadores

LISTA 02 CONJUNTO DE INSTRUÇÕES - GABARITO

Guia de Laboratório 2013 / 2014

Microprocessadores 1º Ano - LECOM

SEL-433 APLICAÇÕES DE MICROPROCESSADORES I

Prof. Adilson Gonzaga

Prova de Arquitectura de Computadores (21010) Data: 12 de Fevereiro de 2010

SISTEMAS DIGITAIS (SD)

Introdução à Arquitetura de Computadores. Coletânea de Problemas. Janeiro 2014

Universidade Federal de Campina Grande Unidade Acadêmica de Sistemas e Computação Curso de Bacharelado em Ciência da Computação.

Programação. MEAer e LEE. Manipulação de ficheiros de texto. Bertinho Andrade da Costa. Instituto Superior Técnico. 2010/2011 1º Semestre

Prova de Arquitectura de Computadores (21010) Data: 18 de Junho de 2010

Sistemas Lógicos II. Aula 11

FORMATO DO PROGRAMA FONTE

Arquitetura e Organização de Computadores

EEC2104 Microprocessadores

Sistemas de Entrada e Saídas III

Arquitetura e Organização de Computadores

INSTITUTO SUPERIOR TÉCNICO. Arquitectura de Computadores (ACom)

Módulo de Cristal Líquido LCD

Introdução à Arquitetura de Computadores. Coletânea de Problemas. Outubro 2014

Grupo I (5 valores) CD AB

William Stallings Arquitetura e Organização de Computadores 8 a Edição

Prova de Arquitectura de Computadores (21010) Data: 5 de Fevereiro de 2009

Organização de Computadores

EEC2104 Microprocessadores

Sumário. Ficheiros. Ficheiros

Arquitectura de Computadores

Escreva um programa em código assembly correspondente ao seguinte programa C.

Símbolos e abreviaturas utilizadas na descrição das instruções

Lista de Exercícios 2

Assembly Sintaxe do Assembly. Instruções que afectam Flags. Aplicações de Microprocessadores 2006/2007

Arquitetura de Computadores Conceitos Fundamentais. Graduação em Engenharia Elétrica - UFPR Prof. Carlos Marcelo Pedroso 2016

Nível da Arquitetura do Conjunto das Instruções

Transcrição:

Arquitectura de Computadores (ACom) MEAer Acetatos das Aulas Teóricas Versão 5.0 - Português Aula N o 06: Título: : entradas e saídas, interrupções e temporizador Sumário: desenvolvimento do ; ; Entradas e saídas; ;. 2015/2016 Nuno.Roma@tecnico.ulisboa.pt

Arquitectura de Computadores (ACom) : entradas e saídas, interrupções e temporizador Prof. Nuno Roma ACom 2015/16 (MEAer) - DEEC-IST 1 / 47 Aula Anterior Na aula anterior... Recursos do Instruções do : Instruções Aritméticas Instruções Lógicas Instruções de Deslocamento Instruções de Controlo Instruções de Transferência de Dados Instruções Genéricas Prof. Nuno Roma ACom 2015/16 (MEAer) - DEEC-IST 2 / 47

Road Map Prof. Nuno Roma ACom 2015/16 (MEAer) - DEEC-IST 3 / 47 Planeamento Planeamento Prof. Nuno Roma ACom 2015/16 (MEAer) - DEEC-IST 4 / 47

Sumário Hoje: desenvolvimento do ; ; Entradas e saídas; ;. Bibliografia: Secções 14.5 e A.2 Prof. Nuno Roma ACom 2015/16 (MEAer) - DEEC-IST 5 / 47 Prof. Nuno Roma ACom 2015/16 (MEAer) - DEEC-IST 6 / 47

Constituído por duas ferramentas distintas (em Linux): Compilador de linguagem Assembly Invocação: $ p3as-linux <nome>.as Resultado: <nome>.exe - Código binário <nome>.lis - Listagem das referências (tags) utilizadas Simulador do Invocação: $ java -jar p3sim.jar <nome>.exe Prof. Nuno Roma ACom 2015/16 (MEAer) - DEEC-IST 7 / 47 Simulador do Simulador do : Prof. Nuno Roma ACom 2015/16 (MEAer) - DEEC-IST 8 / 47

Prof. Nuno Roma ACom 2015/16 (MEAer) - DEEC-IST 9 / 47 Vários periféricos disponíveis: Entrada: 8 Interruptores ON-OFF (switches) 15 Botões de pressão* Saída: 16 LEDs 4 Displays de 7 segmentos LCD de 2 linhas Entrada & Saída: Janela de texto Outros: Temporizador* * - Através de interrupção Prof. Nuno Roma ACom 2015/16 (MEAer) - DEEC-IST 10 / 47

LEDs Utilização: Acessíveis através do endereço FFF8h; O estado individual de cada LED (ligado/desligado) é definido por uma escrita para este porto; O LED da direita é controlado pelo bit menos significativo da palavra escrita. Prof. Nuno Roma ACom 2015/16 (MEAer) - DEEC-IST 11 / 47 LEDs Exemplo: LEDS EQU FFF8h ORIG 0000h... MOV R1,1100111011011011b MOV M[LEDS], R1... Prof. Nuno Roma ACom 2015/16 (MEAer) - DEEC-IST 12 / 47

Interruptores ON-OFF (switches) Utilização: Acessíveis através do endereço FFF9h; Uma leitura deste endereço permite ler, em simultâneo, o estado do conjunto dos 8 interruptores; Ao interruptor da direita corresponde o bit menos significativo da palavra lida. Prof. Nuno Roma ACom 2015/16 (MEAer) - DEEC-IST 13 / 47 Interruptores ON-OFF (switches) Exemplo: LEDS EQU FFF8h SWITCH EQU FFF9h ORIG 0000h... ReadSW: MOV R1, M[SWITCH] MOV M[LEDS], R1 BR ReadSW... Prof. Nuno Roma ACom 2015/16 (MEAer) - DEEC-IST 14 / 47

Displays de 7 Segmentos Utilização: Acessíveis através dos endereços FFF0h, FFF1h, FFF2h e FFF3h; Cada um destes portos controla, da direita para a esquerda, um conjunto de 7 segmentos de LEDs; Os 4 bits menos significativos determinam o caracter hexadecimal (0h a Fh) que aparece no display. Prof. Nuno Roma ACom 2015/16 (MEAer) - DEEC-IST 15 / 47 Displays de 7 Segmentos Exemplo: DISPLAY7SEG0 DISPLAY7SEG1 DISPLAY7SEG2 DISPLAY7SEG3 EQU FFF0h EQU FFF1h EQU FFF2h EQU FFF3h ORIG 0000h... MOV R1, 3 MOV R2, 15 MOV M[DISPLAY7SEG3], R2 SUB R2, R1 MOV M[DISPLAY7SEG2], R2 SUB R2, R1 MOV M[DISPLAY7SEG1], R2 SUB R2, R1 MOV M[DISPLAY7SEG0], R2... Prof. Nuno Roma ACom 2015/16 (MEAer) - DEEC-IST 16 / 47

LCD Utilização: Display com 16 colunas e 2 linhas de texto; Uma escrita para o porto FFF5h faz ecoar o caracter ASCII correspondente aos 8 LSBs da palavra escrita; O porto FFF4h é um porto de controlo: Bit 15 - Liga ou desliga o LCD; Bit 5 - Limpa o LCD; Bit 4 - Posiciona o cursor na linha 0 ou 1; Bits 3 a 0 - Posiciona o cursor na coluna especificada. Prof. Nuno Roma ACom 2015/16 (MEAer) - DEEC-IST 17 / 47 LCD Exemplo: LCD_CTR LCD_CHAR EQU FFF4h EQU FFF5h ORIG 8000h Text STR Hello World,0 ORIG 0000h... MOV R1, 1000000000100000b ; Activa e limpa o LCD MOV M[LCD_CTR], R1 MOV R1, 1000000000000011b ; Linha 0, Coluna 3 MOV M[LCD_CTR], R1 MOV R2, Text ; Ponteiro para o caracter a escrever Other: MOV R3, M[R2] CMP R3, R0 BR.Z EndLCD CMP R3, BR.NZ Cont OR R1, 0000000000010000b ; Muda de linha Cont: MOV M[LCD_CHAR], R3 ; Escreve caracter INC R2 INC R1 MOV M[LCD_CTR], R1 ; Avança para a próxima posiç~ao BR Other EndLCD: BR EndLCD Prof. Nuno Roma ACom 2015/16 (MEAer) - DEEC-IST 18 / 47

Janela de Texto Prof. Nuno Roma ACom 2015/16 (MEAer) - DEEC-IST 19 / 47 Janela de Texto Utilização: Permite ler caracteres do teclado do computador; Permite escrever caracteres numa janela com 24 linhas e 80 colunas; Estão reservados 4 portos: Porto de Leitura - FFFFh (leitura): Retorna o caracter ASCII correspondente à última tecla premida sobre a janela de texto; Porto de Escrita - FFFEh (escrita): Permite escrever um dado caracter ASCII na janela de texto; A janela mantém internamente um cursor onde este caracter é escrito; Prof. Nuno Roma ACom 2015/16 (MEAer) - DEEC-IST 20 / 47

Janela de Texto Utilização: Porto de Estado - FFFDh (leitura): Permite testar se existe ou não algum caracter para ler na janela de texto; caso não haja, uma leitura deste porto retorna 0; Porto de Controlo - FFFCh (escrita): Uma escrita do valor FFFFh inicializa (apaga) a janela de texto; Após a inicialização, a escrita de um caracter no porto de escrita incrementa automaticamente o cursor; É possível posicionar o cursor numa dada posição arbitrária da janela escrevendo, para o porto de controlo, a coordenada desejada de acordo com a seguinte representação: 15 14 13 12 11 10 09 08 07 06 05 04 03 02 01 00 Linha Coluna Prof. Nuno Roma ACom 2015/16 (MEAer) - DEEC-IST 21 / 47 Janela de Texto Exemplo: TXT_CTR EQU FFFCh TXT_ST EQU FFFDh TXT_WR EQU FFFEh TXT_RD EQU FFFFh ORIG 8000h Prompt STR Type some text (press. to finish):,0 Nome TAB 80 ORIG 0000h... MOV R2, Prompt NxChar: MOV R3, M[R2] CMP R3, R0 BR.Z RdKey MOV M[TXT_WR], R3 INC R2 BR NxChar ; Ponteiro para o caracter a escrever ; Escreve caracter RdKey:... Prof. Nuno Roma ACom 2015/16 (MEAer) - DEEC-IST 22 / 47

Janela de Texto Exemplo (cont):... MOV R2, R0 Wait: CMP M[TXT_ST], R0 ; Ciclo de espera por uma tecla primida BR.Z Wait MOV R1, M[TXT_RD] ; L^e a última tecla primida CMP R1,. BR.Z EndInp MOV M[TXT_WR], R1 ; Escreve caracter lido MOV M[R2+Nome], R1 INC R2 BR Wait EndInp: MOV M[R2+Nome], R0... Prof. Nuno Roma ACom 2015/16 (MEAer) - DEEC-IST 23 / 47 Janela de Texto Exemplo (cont):... MOV R1, FFFFh MOV M[TXT_CTR], R1 ; Inicializa e limpa a janela MOV R1, 050Ah ; Linha 5, coluna 10 MOV M[TXT_CTR], R1 ; Posiciona cursor MOV R2, R0 NxStep: MOV R3, M[R2+Nome] CMP R3, R0 BR.Z EndPrg MOV M[TXT_WR], R3 INC R2 INC R1 MOV M[TXT_CTR], R1 BR NxStep EndPrg: BR EndPrg ; Escreve caracter ; Avança para a próxima coluna ; Posiciona cursor Prof. Nuno Roma ACom 2015/16 (MEAer) - DEEC-IST 24 / 47

Janela de Texto Exemplo (cont):... MOV R1, FFFFh MOV M[TXT_CTR], R1 ; Inicializa e limpa a janela MOV R1, 050Ah ; Linha 5, coluna 10 MOV M[TXT_CTR], R1 ; Posiciona cursor MOV R2, R0 NxStep: MOV R3, M[R2+Nome] CMP R3, R0 BR.Z EndPrg MOV M[TXT_WR], R3 INC R2 INC R1 MOV M[TXT_CTR], R1 BR NxStep EndPrg: BR EndPrg ; Escreve caracter ; Avança para a próxima coluna ; Posiciona cursor Prof. Nuno Roma ACom 2015/16 (MEAer) - DEEC-IST 25 / 47 Prof. Nuno Roma ACom 2015/16 (MEAer) - DEEC-IST 26 / 47

: Acontecem quando a sequência normal das instruções é alterada por motivos externos (e não só) ao processador; Necessidade de efectuar algum processamento específico; Operações de entrada/saída (teclado, porto série, etc.). Prof. Nuno Roma ACom 2015/16 (MEAer) - DEEC-IST 27 / 47 Exemplos: Prof. Nuno Roma ACom 2015/16 (MEAer) - DEEC-IST 28 / 47

Exemplos: Prof. Nuno Roma ACom 2015/16 (MEAer) - DEEC-IST 29 / 47 Alternativa ao uso de interrupções: Polling - o processador amostra, a intervalos regulares, o valor sob observação; Problema: sobrecarga grande do processador!!! Prof. Nuno Roma ACom 2015/16 (MEAer) - DEEC-IST 30 / 47

Alternativa ao uso de interrupções: Polling - o processador amostra, a intervalos regulares, o valor sob observação; Problema: sobrecarga grande do processador!!! Prof. Nuno Roma ACom 2015/16 (MEAer) - DEEC-IST 30 / 47 Alternativa ao uso de interrupções: Polling - o processador amostra, a intervalos regulares, o valor sob observação; Problema: sobrecarga grande do processador!!! Melhor solução - : Possibilidade de um dispositivo exterior sinalizar que a sequência normal de instruções deve ser interrompida e que o controlo deve ser transferido para uma rotina de atendimento da interrupção. Prof. Nuno Roma ACom 2015/16 (MEAer) - DEEC-IST 30 / 47

Alternativa ao uso de interrupções: Polling - o processador amostra, a intervalos regulares, o valor sob observação; Problema: sobrecarga grande do processador!!! Melhor solução - : Possibilidade de um dispositivo exterior sinalizar que a sequência normal de instruções deve ser interrompida e que o controlo deve ser transferido para uma rotina de atendimento da interrupção. Prof. Nuno Roma ACom 2015/16 (MEAer) - DEEC-IST 30 / 47 Sinalização das : Cada processador disponibiliza uma ou mais linhas de interrupção que são activadas pelos dispositivos exteriores; Prof. Nuno Roma ACom 2015/16 (MEAer) - DEEC-IST 31 / 47

Sinalização das : Cada processador disponibiliza uma ou mais linhas de interrupção que são activadas pelos dispositivos exteriores; Identificação das : Após ter recebido a indicação de que uma interrupção vai ser atendida, o dispositivo utiliza um dos barramentos exteriores para identificar a interrupção - vector de interrupção; uma única linha de interrupção pode sinalizar várias interrupções diferentes! Prof. Nuno Roma ACom 2015/16 (MEAer) - DEEC-IST 31 / 47 Atendimento das : O processador acede a uma tabela que indica qual o endereço da sub-rotina que deve ser usada para atender o pedido - tabela de rotinas de interrupção; Prof. Nuno Roma ACom 2015/16 (MEAer) - DEEC-IST 32 / 47

Atendimento das : O processador acede a uma tabela que indica qual o endereço da sub-rotina que deve ser usada para atender o pedido - tabela de rotinas de interrupção; Transfere o controlo da execução para esta sub-rotina, após a salvaguarda (automática) na pilha de: Registo de Estado (RE); Program Counter (PC) Prof. Nuno Roma ACom 2015/16 (MEAer) - DEEC-IST 32 / 47 Atendimento das : O processador acede a uma tabela que indica qual o endereço da sub-rotina que deve ser usada para atender o pedido - tabela de rotinas de interrupção; Transfere o controlo da execução para esta sub-rotina, após a salvaguarda (automática) na pilha de: Registo de Estado (RE); Program Counter (PC) Para que os registos RE e PC sejam correctamente recuperados, as rotinas de atendimento das interrupções devem obrigatoriamente terminar com a instrução RTI (em vez de RET, como habitualmente). Prof. Nuno Roma ACom 2015/16 (MEAer) - DEEC-IST 32 / 47

Tabela de rotinas de interrupção: Residente numa zona fixa de memória; Possui tantas entradas quantas as interrupções do processador; Cada entrada contém o endereço do início da rotina de tratamento dessa interrupção. Prof. Nuno Roma ACom 2015/16 (MEAer) - DEEC-IST 33 / 47 Tabela de rotinas de interrupção: Residente numa zona fixa de memória; Possui tantas entradas quantas as interrupções do processador; Cada entrada contém o endereço do início da rotina de tratamento dessa interrupção. No esta tabela começa no endereço FE00h; Prof. Nuno Roma ACom 2015/16 (MEAer) - DEEC-IST 33 / 47

Tabela de rotinas de interrupção: Residente numa zona fixa de memória; Possui tantas entradas quantas as interrupções do processador; Cada entrada contém o endereço do início da rotina de tratamento dessa interrupção. No esta tabela começa no endereço FE00h; Exemplo: Caso seja activada a interrupção n, a execução da rotina de atendimento da interrupção ocorrerá a partir do valor guardado na posição de memória FE00h + n: PC M[FE00h + n] Se for a interrupção 5... PC M[FE05h] Prof. Nuno Roma ACom 2015/16 (MEAer) - DEEC-IST 33 / 47 NOTA: as interrupções podem ocorrer em qualquer momento, sem que o processador o possa prever... Exemplo: entre a execução de uma instrução aritmética e a instrução de salto condicional que dela depende: Loop: DEC R1 Interrupç~ao!!! BR.Z Loop Daí a necessidade em salvaguardar o Registo de Estado (RE)... Prof. Nuno Roma ACom 2015/16 (MEAer) - DEEC-IST 34 / 47

Activação/Inibição das : O programador pode desactivar um bit de estado (E) de modo a impedir que as interrupções sejam atendidas; Necessário em zonas de código onde a ocorrência de uma interrupção pode causar comportamentos indesejados; Como? Prof. Nuno Roma ACom 2015/16 (MEAer) - DEEC-IST 35 / 47 Activação/Inibição das : O programador pode desactivar um bit de estado (E) de modo a impedir que as interrupções sejam atendidas; Necessário em zonas de código onde a ocorrência de uma interrupção pode causar comportamentos indesejados; Como? []: Instruções ENI e DSI. Prof. Nuno Roma ACom 2015/16 (MEAer) - DEEC-IST 35 / 47

Activação/Inibição das : O programador pode desactivar um bit de estado (E) de modo a impedir que as interrupções sejam atendidas; Necessário em zonas de código onde a ocorrência de uma interrupção pode causar comportamentos indesejados; Como? []: Instruções ENI e DSI. No as interrupções são automaticamente inibidas durante o tempo em que o processador executa uma rotina de atendimento de interrupção. Porquê? Prof. Nuno Roma ACom 2015/16 (MEAer) - DEEC-IST 35 / 47 Activação/Inibição das : É ainda possível filtrar as interrupções que devem ser atendidas ou impedir o atendimento de outras através de uma máscara de interrupções: Colocar a zero o bit com peso igual ao vector de interrupção que se pretende inibir: 15 14 13 12 11 10 09 08 07 06 05 04 03 02 01 00 0 0 0 0 0 0 0 0 0 0 0 0 1 0 1 1 Prof. Nuno Roma ACom 2015/16 (MEAer) - DEEC-IST 36 / 47

Activação/Inibição das : É ainda possível filtrar as interrupções que devem ser atendidas ou impedir o atendimento de outras através de uma máscara de interrupções: Colocar a zero o bit com peso igual ao vector de interrupção que se pretende inibir: 15 14 13 12 11 10 09 08 07 06 05 04 03 02 01 00 0 0 0 0 0 0 0 0 0 0 0 0 1 0 1 1 Em geral, a máscara reside numa determinada posição de memória do processador: []: endereço FFFAh Prof. Nuno Roma ACom 2015/16 (MEAer) - DEEC-IST 36 / 47 Activação/Inibição das : É ainda possível filtrar as interrupções que devem ser atendidas ou impedir o atendimento de outras através de uma máscara de interrupções: Colocar a zero o bit com peso igual ao vector de interrupção que se pretende inibir: 15 14 13 12 11 10 09 08 07 06 05 04 03 02 01 00 0 0 0 0 0 0 0 0 0 0 0 0 1 0 1 1 Em geral, a máscara reside numa determinada posição de memória do processador: []: endereço FFFAh Exemplo: activação das interrupções 0, 1 e 3 Prof. Nuno Roma ACom 2015/16 (MEAer) - DEEC-IST 36 / 47

Activação/Inibição das : É ainda possível filtrar as interrupções que devem ser atendidas ou impedir o atendimento de outras através de uma máscara de interrupções: Colocar a zero o bit com peso igual ao vector de interrupção que se pretende inibir: 15 14 13 12 11 10 09 08 07 06 05 04 03 02 01 00 0 0 0 0 0 0 0 0 0 0 0 0 1 0 1 1 Em geral, a máscara reside numa determinada posição de memória do processador: []: endereço FFFAh Exemplo: activação das interrupções 0, 1 e 3 MOV MOV R1, 0000 0000 0000 1011b M[FFFAh], R1 Prof. Nuno Roma ACom 2015/16 (MEAer) - DEEC-IST 36 / 47 Como é que é desencadeada uma interrupção? Botões de Pressão: Estão disponíveis 15 botões de pressão, cada um associado a um vector de interrupção; O accionamento do botão de índice i faz com que o chame a rotina de interrupção associada ao vector i: PC <- M[FE00h+i] Temporizador (vemos a seguir) Prof. Nuno Roma ACom 2015/16 (MEAer) - DEEC-IST 37 / 47

Passos necessários para a utilização de interrupções: 0. Inicialização do Stack!!! 1. Preenchimento da tabela de interrupções 2. Inicialização da máscara de interrupções 3. Activação das interrupções Prof. Nuno Roma ACom 2015/16 (MEAer) - DEEC-IST 38 / 47 Passos necessários para a utilização de interrupções: 0. Inicialização do Stack!!! SP INICIAL EQU FDFFh ; Programa principal Inicio: MOV R7, SP INICIAL MOV SP, R7... 1. Preenchimento da tabela de interrupções 2. Inicialização da máscara de interrupções 3. Activação das interrupções Prof. Nuno Roma ACom 2015/16 (MEAer) - DEEC-IST 38 / 47

Passos necessários para a utilização de interrupções: 0. Inicialização do Stack!!! 1. Preenchimento da tabela de interrupções ; Tabela de interrupç~oes ORIG FE00h INT0 WORD... INT1 WORD ResetCont INT2 WORD... ; Rotina de atendimento da interrupç~ao ResetCont: MOV M[Contador], R0 RTI 2. Inicialização da máscara de interrupções 3. Activação das interrupções Prof. Nuno Roma ACom 2015/16 (MEAer) - DEEC-IST 38 / 47 Passos necessários para a utilização de interrupções: 0. Inicialização do Stack!!! 1. Preenchimento da tabela de interrupções 2. Inicialização da máscara de interrupções INT MASK ADDR EQU FFFAh INT MASK EQU 0000000000000010b ; Programa principal Inicio:... MOV MOV... 3. Activação das interrupções R7, INT MASK M[INT MASK ADDR], R7 Prof. Nuno Roma ACom 2015/16 (MEAer) - DEEC-IST 38 / 47

Passos necessários para a utilização de interrupções: 0. Inicialização do Stack!!! 1. Preenchimento da tabela de interrupções 2. Inicialização da máscara de interrupções 3. Activação das interrupções ; Programa principal Inicio:... ENI... Prof. Nuno Roma ACom 2015/16 (MEAer) - DEEC-IST 38 / 47 Exemplo: SP INICIAL EQU FDFFh INT MASK ADDR EQU FFFAh INT MASK EQU 0000000000000001b ; Tabela de interrupç~oes ORIG FE00h INT0 WORD ResetCont ORIG 0000h ; Programa principal Inicio: MOV R7, SP INICIAL MOV SP, R7 MOV R7, INT MASK MOV M[INT MASK ADDR], R7 ENI... ; Rotina de atendimento da interrupç~ao ResetCont: MOV M[Contador], R0 RTI Prof. Nuno Roma ACom 2015/16 (MEAer) - DEEC-IST 39 / 47

Prof. Nuno Roma ACom 2015/16 (MEAer) - DEEC-IST 40 / 47 Como tratar a passagem do tempo num computador? Solução: temporizadores (timers) Prof. Nuno Roma ACom 2015/16 (MEAer) - DEEC-IST 41 / 47

Como tratar a passagem do tempo num computador? Solução: temporizadores (timers) O possui um temporizador (timer) para permitir contabilizar de forma precisa a passagem do tempo; Prof. Nuno Roma ACom 2015/16 (MEAer) - DEEC-IST 41 / 47 Como tratar a passagem do tempo num computador? Solução: temporizadores (timers) O possui um temporizador (timer) para permitir contabilizar de forma precisa a passagem do tempo; Implementado através de um contador que é decrementado a intervalos de tempo regulares de 100 ms; Prof. Nuno Roma ACom 2015/16 (MEAer) - DEEC-IST 41 / 47

Como tratar a passagem do tempo num computador? Solução: temporizadores (timers) O possui um temporizador (timer) para permitir contabilizar de forma precisa a passagem do tempo; Implementado através de um contador que é decrementado a intervalos de tempo regulares de 100 ms; Como contar 1 minuto e 30 segundos? Prof. Nuno Roma ACom 2015/16 (MEAer) - DEEC-IST 41 / 47 Como tratar a passagem do tempo num computador? Solução: temporizadores (timers) O possui um temporizador (timer) para permitir contabilizar de forma precisa a passagem do tempo; Implementado através de um contador que é decrementado a intervalos de tempo regulares de 100 ms; Como contar 1 minuto e 30 segundos? 1m30s = 90s = 900 intervalos de 100 ms Prof. Nuno Roma ACom 2015/16 (MEAer) - DEEC-IST 41 / 47

O temporizador é controlado por duas posições de memória: endereço FFF6h - corresponde ao temporizador propriamente dito, contendo o número de unidades de tempo a decrementar; endereço FFF7h - permite parar (=0) ou activar (=1) o funcionamento do contador; Prof. Nuno Roma ACom 2015/16 (MEAer) - DEEC-IST 42 / 47 O temporizador é controlado por duas posições de memória: endereço FFF6h - corresponde ao temporizador propriamente dito, contendo o número de unidades de tempo a decrementar; endereço FFF7h - permite parar (=0) ou activar (=1) o funcionamento do contador; Inicialmente a posição de memória FFF7h está a 0 sendo necessário escrever lá o valor 1 para que a contagem tenha início; Prof. Nuno Roma ACom 2015/16 (MEAer) - DEEC-IST 42 / 47

O temporizador é controlado por duas posições de memória: endereço FFF6h - corresponde ao temporizador propriamente dito, contendo o número de unidades de tempo a decrementar; endereço FFF7h - permite parar (=0) ou activar (=1) o funcionamento do contador; Inicialmente a posição de memória FFF7h está a 0 sendo necessário escrever lá o valor 1 para que a contagem tenha início; Quando o temporizador atinge o valor 0 (fim de contagem), a posição de memória FFF7h é automaticamente colocada a 0, parando a contagem; Prof. Nuno Roma ACom 2015/16 (MEAer) - DEEC-IST 42 / 47 O temporizador é controlado por duas posições de memória: endereço FFF6h - corresponde ao temporizador propriamente dito, contendo o número de unidades de tempo a decrementar; endereço FFF7h - permite parar (=0) ou activar (=1) o funcionamento do contador; Inicialmente a posição de memória FFF7h está a 0 sendo necessário escrever lá o valor 1 para que a contagem tenha início; Quando o temporizador atinge o valor 0 (fim de contagem), a posição de memória FFF7h é automaticamente colocada a 0, parando a contagem; Para iniciar nova contagem será pois necessário colocar novo valor em FFF6h e colocar 1 em FFF7h. Prof. Nuno Roma ACom 2015/16 (MEAer) - DEEC-IST 42 / 47

O temporizador está associado à interrupção 15, a qual é activada quando o contador atinge o valor 0 Prof. Nuno Roma ACom 2015/16 (MEAer) - DEEC-IST 43 / 47 O temporizador está associado à interrupção 15, a qual é activada quando o contador atinge o valor 0: Para garantir a máxima precisão, é conveniente que a re-programação do timer seja feita pela própria rotina de atendimento da interrupção!!! Re-iniciar intervalo de contagem em FFF6h Re-activar contagem em FFF7h Prof. Nuno Roma ACom 2015/16 (MEAer) - DEEC-IST 43 / 47

(exemplo) TopoPilha EQU FDFFh ; endereço do topo da pilha InterrupMask EQU FFFAh ; endereço da Máscara de Interrupç~oes TimerValue EQU FFF6h ; endereço do Temporizador TimerControl EQU FFF7h ; endereço do controlo do temporizador Int15_mask EQU 8000h ; 1000 0000 0000 0000 b TimeLong EQU 0050h EnableTimer EQU 0001h ORIG FE0Fh ; FE0Fh = FE00h + Fh (Fh = 15) INT15 WORD TimerSub ; Preenchimento da posiç~ao 15 da Tabela de Interrupç~oes ORIG 0000h MOV R1,TopoPilha MOV SP,R1 ; inicializa SP MOV R1,Int15_mask MOV M[InterruptMask],R1 ; Permite a interrupç~ao 15 (timer) MOV R1,TimeLong MOV M[TimerValue],R1 ; definir valor de contagem do timer MOV R1,EnableTimer MOV M[TimerControl],R1 ; inicia contagem ENI ; aceita interrupç~oes... ; esta subrotina é chamada quando o temporizador chegou ao fim (0) vai ser necessário ; definir novo valor de contagem e permitir que essa contagem comece ( M[FFF7h] = 1 ) TimerSub: PUSH R1 MOV R1,TimeLong MOV M[TimerValue],R1 ; definir valor de contagem do timer MOV R1,EnableTimer MOV M[TimerControl],R1 ; inicia contagem... POP R1 RTI Prof. Nuno Roma ACom 2015/16 (MEAer) - DEEC-IST 44 / 47 Prof. Nuno Roma ACom 2015/16 (MEAer) - DEEC-IST 45 / 47

Tradução de linguagem de alto nível para Assembly: Constantes Variáveis Estruturas de controlo Chamadas a sub-rotinas Passagem de parâmetros para sub-rotinas: Por registo Por memória Pela pilha Prof. Nuno Roma ACom 2015/16 (MEAer) - DEEC-IST 46 / 47 Nota de Agradecimento Agradecimento Algumas páginas desta apresentação foram extraidas de: [1] José Carlos Monteiro, Arquitectura de Computadores, Instituto Superior Técnico (IST), Universidade Técnica de Lisboa, Portugal, 2010. Prof. Nuno Roma ACom 2015/16 (MEAer) - DEEC-IST 47 / 47