Organização Básica de computadores e linguagem de...

32
Organização Básica de computadores e linguagem de montagem 2 o Semestre de 2011 Prof. Edson Borin

Transcript of Organização Básica de computadores e linguagem de...

Page 1: Organização Básica de computadores e linguagem de montagemedson/disciplinas/mc404/2011-2s/slides/mc404_7... · de 8 MB), o processador deve dispor de um barramento de dados com

Organização Básica de computadores e linguagem de

montagem

2o Semestre de 2011

Prof. Edson Borin

Page 2: Organização Básica de computadores e linguagem de montagemedson/disciplinas/mc404/2011-2s/slides/mc404_7... · de 8 MB), o processador deve dispor de um barramento de dados com

Entrada e Saída

Page 3: Organização Básica de computadores e linguagem de montagemedson/disciplinas/mc404/2011-2s/slides/mc404_7... · de 8 MB), o processador deve dispor de um barramento de dados com

Entrada e Saída

• Dispositivos de E/S (Entrada/Saída) ou I/O (Input/Output) permitem a entrada e saída de dados do processador.

• Ex: Teclado, Mouse, Monitor, Impressora, Placa de rede, disco rígido, unidade de CD-ROM.

• Como funciona?

Page 4: Organização Básica de computadores e linguagem de montagemedson/disciplinas/mc404/2011-2s/slides/mc404_7... · de 8 MB), o processador deve dispor de um barramento de dados com

Saída6 CAPÍTULO 2. ORGANIZAÇÃO BÁSICA DE COMPUTADORES

Barramento de dados

Barramento de controle

Barramento de endereço

Processador Memória

Entradae

Saída

Figura 2.1: Esquema simplificado de um computador

os dados podem trafegar nas duas direções, enquanto que no barramento de

endereços a informação trafega em uma única direção. O barramento de en-

dereços contém tantos fios (bits) quantos forem necessários para endereçar

todas as palavras da memória. O número de fios (bits) do barramento de

dados é igual ao tamanho de cada palavra na memória. Assim, para comu-

nicação com uma memória organizada como 2 MB palavras de 32 bits (total

de 8 MB), o processador deve dispor de um barramento de dados com 32 fios

(largura da palavra), e um barramento de endereço com pelo menos 21 fios

(para endereçar 2 MB palavras).

A comunicação entre o processador e a memória é feita da seguinte ma-

neira. Quando o processador necessita de um dado na memória, ele especifica

pelo barramento de endereços qual o endereço de memória da palavra que

contém o dado. Feito isto, o processador especifica pelo barramento de con-

trole que a operação é de leitura em memória (note que isto pode ser realizado

com apenas um fio do barramento). A memória coloca então o valor da palavra

especificada no barramento de dados, que é finalmente lido pelo processador.

A operação de escrita na memória é similar. O processador coloca no

barramento de endereços o endereço da palavra que deve ser modificada, e no

barramento de dados o valor a ser escrito. O processador indica pelo barra-

Escrever em um dispositivode Saída.

Page 5: Organização Básica de computadores e linguagem de montagemedson/disciplinas/mc404/2011-2s/slides/mc404_7... · de 8 MB), o processador deve dispor de um barramento de dados com

Saída

• Como o programa realiza uma saída?• Escreve em uma porta, que está associada a um

dispositivo de saída.• 2 opções comuns:

–Instrução especial para saída. Ex:out 10h, r1

–Instrução de store em uma faixa de endereços reservada. Ex:

st 10h, r1Como o processador sabe se é uma saída ou acesso à memória?

Page 6: Organização Básica de computadores e linguagem de montagemedson/disciplinas/mc404/2011-2s/slides/mc404_7... · de 8 MB), o processador deve dispor de um barramento de dados com

Entrada6 CAPÍTULO 2. ORGANIZAÇÃO BÁSICA DE COMPUTADORES

Barramento de dados

Barramento de controle

Barramento de endereço

Processador Memória

Entradae

Saída

Figura 2.1: Esquema simplificado de um computador

os dados podem trafegar nas duas direções, enquanto que no barramento de

endereços a informação trafega em uma única direção. O barramento de en-

dereços contém tantos fios (bits) quantos forem necessários para endereçar

todas as palavras da memória. O número de fios (bits) do barramento de

dados é igual ao tamanho de cada palavra na memória. Assim, para comu-

nicação com uma memória organizada como 2 MB palavras de 32 bits (total

de 8 MB), o processador deve dispor de um barramento de dados com 32 fios

(largura da palavra), e um barramento de endereço com pelo menos 21 fios

(para endereçar 2 MB palavras).

A comunicação entre o processador e a memória é feita da seguinte ma-

neira. Quando o processador necessita de um dado na memória, ele especifica

pelo barramento de endereços qual o endereço de memória da palavra que

contém o dado. Feito isto, o processador especifica pelo barramento de con-

trole que a operação é de leitura em memória (note que isto pode ser realizado

com apenas um fio do barramento). A memória coloca então o valor da palavra

especificada no barramento de dados, que é finalmente lido pelo processador.

A operação de escrita na memória é similar. O processador coloca no

barramento de endereços o endereço da palavra que deve ser modificada, e no

barramento de dados o valor a ser escrito. O processador indica pelo barra-

Ler de um dispositivode Entrada.

Page 7: Organização Básica de computadores e linguagem de montagemedson/disciplinas/mc404/2011-2s/slides/mc404_7... · de 8 MB), o processador deve dispor de um barramento de dados com

Entrada

• Como o programa realiza uma entrada?• Lê de uma porta, que está associada a um

dispositivo de entrada.• 2 opções comuns:

–Instrução especial para entrada. Ex:in r1, 10h

–Instrução de load em uma faixa de endereços reservada. Ex:

ld r1, 10hComo o processador sabe se é uma entrada ou acesso à memória?

Page 8: Organização Básica de computadores e linguagem de montagemedson/disciplinas/mc404/2011-2s/slides/mc404_7... · de 8 MB), o processador deve dispor de um barramento de dados com

No Faíska

• Entrada–in rdest, expr8–in rdest, rfonte–inb rdest, expr8–inb rdest, rfonte

• Saída–out expr8, rdest–out rfonte, rdest–outb expr8, rdest–outb rfonte, rdest

Page 9: Organização Básica de computadores e linguagem de montagemedson/disciplinas/mc404/2011-2s/slides/mc404_7... · de 8 MB), o processador deve dispor de um barramento de dados com

Exemplo - Elevador

• Dois dispositivos. 1 de entrada e 1 de saída

• Entrada:–sensor de andar. Conectado à porta 20h.–quando acessado, responde com um byte indicando o andar atual (de 0 a 9)

Page 10: Organização Básica de computadores e linguagem de montagemedson/disciplinas/mc404/2011-2s/slides/mc404_7... · de 8 MB), o processador deve dispor de um barramento de dados com

Exemplo - Elevador

• Saída–mostrador digital: Conectado à porta 30h–dispositivo com 7 segmentos (a,b,...,g) luminosos que

ficam ligados ou desligados de acordo com o dado no registrador de controle.

–a saída corresponde em escrever um byte no registrador de controle.

4 CAPÍTULO 5. ENTRADA E SAÍDA

elevador:

1 SENSOR_DATA equ 20h ; porta do sensor

23 inb r0,SENSOR_DATA ; le valor do andar corrente

O mostrador é um dispositivo apenas de saída, com um único dígito, conforme a

Figura 5.1 (a). Os segmentos do mostrador, mais o ponto decimal, podem ser indivi-

dualmente ligados ou desligados. Cada segmento corresponde a um bit em um byte,

mostrado na Figura 5.1 (b). O mostrador está conectado à porta 30h, chamada de porta

de dados do mostrador. A operação de escrita de um byte nessa porta controla quais

segmentos são acesos e quais são apagados. Se um determinado bit tem o valor 1, o

segmento correspondente é aceso, caso contrário o segmento correspondente é apagado.

Assim, por exemplo, se um byte com o valor 7eh for escrito na porta do mostrador, o

dígito ‘0’ será mostrado (apenas os segmentos p e g apagados) e se um byte com o valor

30h for escrito na porta do mostrador o dígito ‘1’ será mostrado (apenas os segmentos be c ligados).

a

b

c

d

e

fg

p

bp gca e fd

6 0157 3 24

(a) (b)

Figura 5.1: Mostrador de sete segmentos (a) e os bits correspondentes no byte de controle

(b).

Exercício 5.1 Escrever um procedimento que atualize o valor do mostrador do elevador

com o valor lido do sensor.

Page 11: Organização Básica de computadores e linguagem de montagemedson/disciplinas/mc404/2011-2s/slides/mc404_7... · de 8 MB), o processador deve dispor de um barramento de dados com

Exemplo - Elevador5.2. SINCRONIZAÇÃO 5

1 ; *************

2 ; AtualizaAndar

3 ; *************

4 ; Lê andar corrente do sensor e atualiza valor do mostrador

5 ; Destrói: r0 e r2

67 ; definição das portas usadas

8 SENSOR_DATA equ 20h ; porta do sensor

9 DISPLAY_DATA equ 30h ; porta do mostrador

1011 AtualizaAndar:

12 inb r0,SENSOR_DATA ; lê valor do andar corrente

13 set r2,tab_digitos ; prepara para determinar codificação

14 add r2,r0 ; do digito lido

15 ldb r2,(r2) ; carrega a codificação correspondente

16 outb DISPLAY_DATA,r2; escreve no mostrador

17 ret

1819 ; tabela de codificação de dígitos

20 tab_digitos:

21 db 7eh,30h,6dh,79h,33h,5bh,5fh,70h,7fh,7bh

O procedimento AtualizaAndar simplesmente lê o valor do andar corrente e atualiza

o mostrador com o valor correspondente. A codificação dos dígitos é armazenada no

vetor de bytes tab_digitos. O valor lido do sensor é usado como índice nesse vetor

para determinar a codificação do dígito a ser mostrado.

5.2 Sincronização

Os exemplos vistos acima são muito simples, e não ilustram a principal diferença entre

acessos à memória e a dispositivos de E/S, que é a sincronização no acesso. No caso de

acessos de leitura à memória, como vimos, o processador espera apenas um tempo fixo

(chamado tempo de resposta, que é o tempo com que a memória responde a um acesso

de leitura mais o tempo necessário para que os barramentos se estabilizem), e executa

a leitura, tendo a certeza de que, se a memória estiver especificada corretamente para

atender a esse tempo de resposta, o dado estará disponível no barramento de dados.

Considere agora um dispositivo de entrada bastante utilizado, um teclado. Nos nossos

exemplos vamos utilizar um teclado similar aos utilizados em telefones, mostrado na

figura abaixo.

Considere que o teclado possa ser acessado através da porta 40h: uma leitura nessa

porta, chamada de porta de dados do teclado, recebe um valor correspondente à última

tecla pressionada. No entanto, como saber se uma tecla foi realmente pressionada (e

ainda não foi lida)? Para resolver esse problema, o teclado possui mais uma porta, cha-

mada de porta de estado do teclado, que pode ser consultada para saber o estado do

teclado. O estado do teclado é indicado por um byte em que os dois bits menos signifi-

cativos representam condições de operação do teclado:

Page 12: Organização Básica de computadores e linguagem de montagemedson/disciplinas/mc404/2011-2s/slides/mc404_7... · de 8 MB), o processador deve dispor de um barramento de dados com

Problemas com a abordagem anterior

• Suponha que o elevador suba 8 andares.

• Quando devemos chamar o procedimento AtualizaAndar?

Page 13: Organização Básica de computadores e linguagem de montagemedson/disciplinas/mc404/2011-2s/slides/mc404_7... · de 8 MB), o processador deve dispor de um barramento de dados com

Outro Exemplo - Teclado

• Teclado:–Dispositivo de Entrada–Duas portas: dados (40h) e estado (41h)–Dado lido representa caractere

inb r1, 40h ; lê dadoinb r2, 41h ; lê estado

Teclado simples

1 2 3

4 5 6

7 8 9

* 0 #

• E se o teclado for apertado múltiplas vezes?

• Como saber se o dado que está lá já foi lido?

Page 14: Organização Básica de computadores e linguagem de montagemedson/disciplinas/mc404/2011-2s/slides/mc404_7... · de 8 MB), o processador deve dispor de um barramento de dados com

Outro Exemplo - Teclado

• Teclado:–um bit de estado indica se o dado atual não foi lido pelo processador ainda (READY).

–outro bit de estado indica se mais de um botão já foi apertado antes do processador ler o dado, ou seja, houve dado perdido (OVRN)

Teclado simples

1 2 3

4 5 6

7 8 9

* 0 #

Page 15: Organização Básica de computadores e linguagem de montagemedson/disciplinas/mc404/2011-2s/slides/mc404_7... · de 8 MB), o processador deve dispor de um barramento de dados com

Outro Exemplo - Teclado (Busy waiting)

5.2. SINCRONIZAÇÃO 7

1 ; *******

2 ; LeTecla

3 ; *******

4 ; Le valor de tecla no teclado

5 ; Destroi: r0, r1, flags

6 ; Retorna: r0 com valor da tecla lida (de 0 a 11)

78 ; enderecos de portas

9 KEYBD_DATA equ 40h ; porta de dados

10 KEYBD_STAT equ 41h ; porta de estado

1112 ; bits de estado

13 KEYBD_READY equ 1 ; bit READY

14 KEYBD_OVRN equ 2 ; bit OVRN

1516 LeTecla:

17 inb r0,KEYBD_STAT ; lê porta de estado

18 set r1,KEYBD_READY

19 test r0,r1 ; dado pronto para ser lido?

20 jz LeTecla ; espera que dado esteja pronto

21 set r1,KEYBD_READY

22 test r0,r1 ; houve erro?

23 jnz Erro ;

24 inb r0,KEYBD_DATA ; le porta de dados

25 ret

26 ; aqui trata erro (não mostrado)

27 Erro:

O procedimento LeTecla espera até que uma tecla tenha sido pressionada e re-

torna o valor da tecla no registrador r0. O problema com esse procedimento é que,

como não é possível rever quando uma tecla será pressionada, o processador pode fi-

car muito tempo no laço das linhas 15 18. Esse é um problema típico de sincronização

da comunicação processador – E/S, e a solução adotada pelo procedimento LeTecla é

chamada de “espera forçada”.

Uma maneira de amenizar o problema é modificar o procedimento LeTecla para

retornar imediatamente se nenhuma tecla foi pressionada desde a última leitura:

Page 16: Organização Básica de computadores e linguagem de montagemedson/disciplinas/mc404/2011-2s/slides/mc404_7... · de 8 MB), o processador deve dispor de um barramento de dados com

Problemas com a abordagem anterior

• Suponha que o usuário demore para apertar algo.

• O que o processador faz?

Page 17: Organização Básica de computadores e linguagem de montagemedson/disciplinas/mc404/2011-2s/slides/mc404_7... · de 8 MB), o processador deve dispor de um barramento de dados com

Problemas com a abordagem anterior

• Suponha que o usuário demore para apertar algo.

• O que o processador faz?

• Como melhorar?

–Verifique o teclado de tempos em tempos e faça algum trabalho útil no entre as verificações.

•Ainda há o risco do usuário pressionar a tecla múltiplas vezes antes do programa verificar se alguma tecla foi pressionada.

•Talvez o usuário não seja tão rápido para causar este problema, mas e se for uma placa de rede.

Page 18: Organização Básica de computadores e linguagem de montagemedson/disciplinas/mc404/2011-2s/slides/mc404_7... · de 8 MB), o processador deve dispor de um barramento de dados com

Problemas com a abordagem anterior

• Suponha que o usuário demore para apertar algo.

• O que o processador faz?

• Como melhorar?

–Verifique o teclado de tempos em tempos e faça algum trabalho útil no entre as verificações.

•Ainda há o risco do usuário pressionar a tecla múltiplas vezes antes do programa verificar se alguma tecla foi pressionada.

•Talvez o usuário não seja tão rápido para causar este problema, mas e se for uma placa de rede.

Interrupção: O dispositivo

avisa o processador quando

acondeceu alguma coisa!

Page 19: Organização Básica de computadores e linguagem de montagemedson/disciplinas/mc404/2011-2s/slides/mc404_7... · de 8 MB), o processador deve dispor de um barramento de dados com

Interrupção

• Iniciativa de comunicação é do periférico• Exemplo:

–Quando o dado está disponível, o teclado “interrompe” o processador.

–O processador pára o que está fazendo para atender o teclado

–Após o processamento da leitura, o processador continua com o que estava fazendo.

Page 20: Organização Básica de computadores e linguagem de montagemedson/disciplinas/mc404/2011-2s/slides/mc404_7... · de 8 MB), o processador deve dispor de um barramento de dados com

Interrupção

• O processador pára o que está fazendo para atender o teclado.

• O que acontece com o programa que o processador estava executando???

Page 21: Organização Básica de computadores e linguagem de montagemedson/disciplinas/mc404/2011-2s/slides/mc404_7... · de 8 MB), o processador deve dispor de um barramento de dados com

Interrupção

• O processador pára o que está fazendo para atender o teclado.

• O que acontece com o programa que o processador estava executando???–Antes de tratar a interrupção, é importante salvar

todo o “contexto” do programa que está executando•Registradores,•flags,•Manter a pilha consistente...

Page 22: Organização Básica de computadores e linguagem de montagemedson/disciplinas/mc404/2011-2s/slides/mc404_7... · de 8 MB), o processador deve dispor de um barramento de dados com

Exemplo: Interrupção

set r1, 1000loop: call algo_util sub r1, 1h cmp r1, 0 jnz loop sys 20h

6 CAPÍTULO 2. ORGANIZAÇÃO BÁSICA DE COMPUTADORES

Barramento de dados

Barramento de controle

Barramento de endereço

Processador Memória

Entradae

Saída

Figura 2.1: Esquema simplificado de um computador

os dados podem trafegar nas duas direções, enquanto que no barramento de

endereços a informação trafega em uma única direção. O barramento de en-

dereços contém tantos fios (bits) quantos forem necessários para endereçar

todas as palavras da memória. O número de fios (bits) do barramento de

dados é igual ao tamanho de cada palavra na memória. Assim, para comu-

nicação com uma memória organizada como 2 MB palavras de 32 bits (total

de 8 MB), o processador deve dispor de um barramento de dados com 32 fios

(largura da palavra), e um barramento de endereço com pelo menos 21 fios

(para endereçar 2 MB palavras).

A comunicação entre o processador e a memória é feita da seguinte ma-

neira. Quando o processador necessita de um dado na memória, ele especifica

pelo barramento de endereços qual o endereço de memória da palavra que

contém o dado. Feito isto, o processador especifica pelo barramento de con-

trole que a operação é de leitura em memória (note que isto pode ser realizado

com apenas um fio do barramento). A memória coloca então o valor da palavra

especificada no barramento de dados, que é finalmente lido pelo processador.

A operação de escrita na memória é similar. O processador coloca no

barramento de endereços o endereço da palavra que deve ser modificada, e no

barramento de dados o valor a ser escrito. O processador indica pelo barra-

Teclado simples

1 2 3

4 5 6

7 8 9

* 0 #

Page 23: Organização Básica de computadores e linguagem de montagemedson/disciplinas/mc404/2011-2s/slides/mc404_7... · de 8 MB), o processador deve dispor de um barramento de dados com

Exemplo: Interrupçãoset r1, 1000loop: call algo_util sub r1, 1h cmp r1, 0 jnz loop sys 20h

trata_teclado: push r0 inb r0, 40h ... ; faça algo pop r0 iret

6 CAPÍTULO 2. ORGANIZAÇÃO BÁSICA DE COMPUTADORES

Barramento de dados

Barramento de controle

Barramento de endereço

Processador Memória

Entradae

Saída

Figura 2.1: Esquema simplificado de um computador

os dados podem trafegar nas duas direções, enquanto que no barramento de

endereços a informação trafega em uma única direção. O barramento de en-

dereços contém tantos fios (bits) quantos forem necessários para endereçar

todas as palavras da memória. O número de fios (bits) do barramento de

dados é igual ao tamanho de cada palavra na memória. Assim, para comu-

nicação com uma memória organizada como 2 MB palavras de 32 bits (total

de 8 MB), o processador deve dispor de um barramento de dados com 32 fios

(largura da palavra), e um barramento de endereço com pelo menos 21 fios

(para endereçar 2 MB palavras).

A comunicação entre o processador e a memória é feita da seguinte ma-

neira. Quando o processador necessita de um dado na memória, ele especifica

pelo barramento de endereços qual o endereço de memória da palavra que

contém o dado. Feito isto, o processador especifica pelo barramento de con-

trole que a operação é de leitura em memória (note que isto pode ser realizado

com apenas um fio do barramento). A memória coloca então o valor da palavra

especificada no barramento de dados, que é finalmente lido pelo processador.

A operação de escrita na memória é similar. O processador coloca no

barramento de endereços o endereço da palavra que deve ser modificada, e no

barramento de dados o valor a ser escrito. O processador indica pelo barra-

Teclado simples

1 2 3

4 5 6

7 8 9

* 0 #

Page 24: Organização Básica de computadores e linguagem de montagemedson/disciplinas/mc404/2011-2s/slides/mc404_7... · de 8 MB), o processador deve dispor de um barramento de dados com

Interrupção

• Diversos dispositivos de E/S.

• Como chamar o tradador de interrupção correto?

• Diversas opções:

–a) Um único tratador que verifica qual dispositivo interrompeu e chama o procedimento adequada.

–b) Múltiplos tratadores, um para cada dispositivo.

•Vetor de interrupções!

–Armazena o endereço das rotinas de tratamento.

Page 25: Organização Básica de computadores e linguagem de montagemedson/disciplinas/mc404/2011-2s/slides/mc404_7... · de 8 MB), o processador deve dispor de um barramento de dados com

Exemplo: Interrupçõesorg 0004hdw trata_teclado

org 0404hset r1, 1000loop: call algo_util sub r1, 1h cmp r1, 0 jnz loop sys 20h

org 0500htrata_teclado: push r0 inb r0, 40h ... ; faça algo pop r0 iret

0000 ...

0004 0500

.... ...

0404 set r1,1000

040c call algo_util

0414 sub r1, 1h

0418 cmp r1, 0

041c jnz 040c

0420 sys 20

.... ...

0500 push r0

0504 inb r0, 40h

.... ...

0520 pop r0

0524 iret

Vetor de Interrupções

Memória

Principal

0x15000x14FC0x14F80x14F40x14F00x14EC0x14E8

0x0000

Pilh

a

Page 26: Organização Básica de computadores e linguagem de montagemedson/disciplinas/mc404/2011-2s/slides/mc404_7... · de 8 MB), o processador deve dispor de um barramento de dados com

Interrupções no Faíska• Vetor de interrupções com 256 entradas• Endereço 0 ao 1023• Ao receber uma interrupção, o processador:

– termina a execução da instrução atual

– empilha o endereço da instrução atual (próxima)

– empilha o registrador de bits de estado– consulta o controlador de interrupções para determinar o tipo

de interrupção (T) mais prioritária

– Acessa a memória para determinar o endereço do tratador da interrupção. O acesso é no endereço 4 * T. O vetor de interrupções começa no endereço 0 da memória e cada entrada possui 4 bytes, logo a T-ésima entrada está no endereço 4 * T.

– desvia a execução para a rotina de tratamento: IP <= endereço do tratador

Page 27: Organização Básica de computadores e linguagem de montagemedson/disciplinas/mc404/2011-2s/slides/mc404_7... · de 8 MB), o processador deve dispor de um barramento de dados com

Interrupções no Faíska• Rotinas de interrupção retornam à execução do programa com a

instrução “iret”. Esta instrução:– Desempilha o registrador de bits de estado,

– Desmpilha o endereço da próxima instrução a ser executada, e

– Desvia a execução para a próxima instrução.

Page 28: Organização Básica de computadores e linguagem de montagemedson/disciplinas/mc404/2011-2s/slides/mc404_7... · de 8 MB), o processador deve dispor de um barramento de dados com

Interrupções

• E se ocorrer outra interrupção enquanto o processador estiver tratando uma interrupção???

Page 29: Organização Básica de computadores e linguagem de montagemedson/disciplinas/mc404/2011-2s/slides/mc404_7... · de 8 MB), o processador deve dispor de um barramento de dados com

Interrupções

• E se ocorrer outra interrupção enquanto o processador estiver tratando uma interrupção???–Se a nova interrupção for de maior prioridade, é

melhor interromper o tratamento atual e tratar a nova interrupção.

• Mas e se a rotina estiver “conversando” com um dispositivo que não pode esperar?

Page 30: Organização Básica de computadores e linguagem de montagemedson/disciplinas/mc404/2011-2s/slides/mc404_7... · de 8 MB), o processador deve dispor de um barramento de dados com

Interrupções

• E se ocorrer outra interrupção enquanto o processador estiver tratando uma interrupção???–Se a nova interrupção for de maior prioridade, é

melhor interromper o tratamento atual e tratar a nova interrupção.

• Mas e se a rotina estiver “conversando” com um dispositivo que não pode esperar?–Neste caso, podemos inibir interrupções!

•cli: clear interrupts•sti: set interrupts

Page 31: Organização Básica de computadores e linguagem de montagemedson/disciplinas/mc404/2011-2s/slides/mc404_7... · de 8 MB), o processador deve dispor de um barramento de dados com

Exemplo: relógioorg 12h * 4dw timer ; Interrupção do timerorg 400htempo_seg: ds 4 ; Variavel para guardar o tempo e seg....set r0, 1000 ; Programar o timer paraout TIMER_DATA, r0 ; interromper a cada 1000 ms

loop: ; laço principal. call mostra_tempo ; jmp loop

timer: ; tratador de interrupção push r0 ; incrementa o tempo em segundos. ld r0, tempo_seg add r0, 1 st tempo_seg, r0 pop r0 iret

Page 32: Organização Básica de computadores e linguagem de montagemedson/disciplinas/mc404/2011-2s/slides/mc404_7... · de 8 MB), o processador deve dispor de um barramento de dados com

Exemplo: relógioorg 12h * 4dw timer ; Interrupção do timerorg 400htempo_seg: ds 4 ; Variavel para guardar o tempo e seg....set r0, 1000 ; Programar o timer paraout TIMER_DATA, r0 ; interromper a cada 1000 ms

loop: ; laço principal. call mostra_tempo ; wait ; Dorme!!! jmp loop

timer: ; tratador de interrupção push r0 ; incrementa o tempo em segundos. ld r0, tempo_seg add r0, 1 st tempo_seg, r0 pop r0 iret