assembly

24
7/21/2019 assembly http://slidepdf.com/reader/full/assembly-56da1b977f196 1/24 EA869 – Prof. Von Zuben  DCA/FEEC/Unicamp 1 Lista de Exercícios – Preparação para Prova 2 Questão 1 Em um determinado programa, uma subrotina SUB1 é chamada muitas vezes, com um conjunto diferente de parâmetros reais a cada chamada. Sendo R1 e R2 os registradores que armazenam os dois parâmetros formais de entrada e R3 o registrador que armazena o parâmetro formal de saída, escreva uma macro de nome CHAMASUB que substitua o trecho de código associado à chamada da subrotina. Considerando passagem de parâmetros por valor e parâmetros reais como aqueles que se encontram nas posições de memória DADO1, DADO2 (para entrada) e REST (para saída), um exemplo de código a ser substituído pela chamada da macro é o seguinte: MOV DADO1, R1 MOV DADO2, R2 CALL SUB1 MOV R3,REST e a chamada da macro fica: CHAMASUB SUB1, DADO1, DADO2, REST EA869 – Prof. Von Zuben  DCA/FEEC/Unicamp 2 Questão 2 Sabendo que a convenção de passagem de parâmetros é por área associada à subrotina, é possível implementar um código relocável? Se a resposta for afirmativa, então realize as alterações necessárias para que programa e subrotina tenham código relocável. Os códigos a serem alterados são aqueles apresentados nas figuras 5.11 e 5.12 (pg. 142) do livro-texto. Questão 3  Um código relocável é aquele cuja execução independe de sua posição na memória. Um código reentrante é aquele cuja execução independe da posição de seus dados. Pergunta: Todo código reentrante é relocável? Caso sua resposta seja negativa, apresente então um exemplo de código reentrate mas não-relocável. Questão 4 Considere uma subrotina que calcule: X = A * B + C – D

Upload: armando-lopes-carvalho

Post on 05-Mar-2016

215 views

Category:

Documents


0 download

DESCRIPTION

Lista exercicios assembly

TRANSCRIPT

Page 1: assembly

7/21/2019 assembly

http://slidepdf.com/reader/full/assembly-56da1b977f196 1/24

EA869 – Prof. Von Zuben DCA/FEEC/Unicamp

1

Lista de Exercícios – Preparação para Prova 2

Questão 1 

Em um determinado programa, uma subrotina SUB1 é chamada muitas vezes, com um

conjunto diferente de parâmetros reais a cada chamada. Sendo R1 e R2 os registradores que

armazenam os dois parâmetros formais de entrada e R3 o registrador que armazena o parâmetroformal de saída, escreva uma macro de nome CHAMASUB que substitua o trecho de código

associado à chamada da subrotina. Considerando passagem de parâmetros por valor e

parâmetros reais como aqueles que se encontram nas posições de memória DADO1, DADO2

(para entrada) e REST (para saída), um exemplo de código a ser substituído pela chamada da

macro é o seguinte:

MOV DADO1, R1

MOV DADO2, R2

CALL SUB1

MOV R3,REST

e a chamada da macro fica:

CHAMASUB SUB1, DADO1, DADO2, REST

EA869 – Prof. Von Zuben DCA/FEEC/Unicamp

2

Questão 2 

Sabendo que a convenção de passagem de parâmetros é por área associada à subrotina, é

possível implementar um código relocável? Se a resposta for afirmativa, então realize as

alterações necessárias para que programa e subrotina tenham código relocável. Os códigos a

serem alterados são aqueles apresentados nas figuras 5.11 e 5.12 (pg. 142) do livro-texto.

Questão 3 Um código relocável é aquele cuja execução independe de sua posição na memória. Um código

reentrante é aquele cuja execução independe da posição de seus dados. Pergunta: Todo código

reentrante é relocável? Caso sua resposta seja negativa, apresente então um exemplo de código

reentrate mas não-relocável.

Questão 4 

Considere uma subrotina que calcule:

X = A * B + C – D

Page 2: assembly

7/21/2019 assembly

http://slidepdf.com/reader/full/assembly-56da1b977f196 2/24

EA869 – Prof. Von Zuben DCA/FEEC/Unicamp

3

O programa principal chama a sub-rotina passando os parâmetros reais A, B, C e D, definidos

com valores iniciais 13, 24, 56 e 35, respectivamente. A passagem de parâmetros deve ser por

valor em área associada à subrotina.

a) Especifique (descreva) a convenção de passagem de parâmetros da sub-rotina.

b) Escreva a sub-rotina com os trechos de código que mostrem leitura e manipulação dos

parâmetros e retorno do resultado.

c) Escreva os trechos do programa principal que mostrem as instruções necessárias para a

chamada e retorno do resultado da sub-rotina.

d) Modifique a sub-rotina, considerando o caso em que são passados os endereços dos

parâmetros.

Questão 5 

Caso se deseje resolver o problema da Questão 4 usando uma macro, escreva a definição da

macro.

EA869 – Prof. Von Zuben DCA/FEEC/Unicamp

4

Questão 6 

Uma subrotina recebe um parâmetro de entrada passado por valor e retorna o quadrado deste

valor, na forma:

SUB: POP R3

POP R4

MOVE R4,R5

MUL R5,R4

PUSH R4PUSH R3

RTS

Escreva o trecho de programa que prepara a chamada da subrotina e a leitura do valor de

retorno.

Nota: O valor a ser passado à subrotina está no registrador R8 e o valor de retorno deve estar no

registrador R9. Além disto, o registrador R4 deve poder ser utilizado em qualquer ponto do

programa que chama a subrotina. O programa não utiliza nenhum outro registrador além de R4,R8 e R9.

Page 3: assembly

7/21/2019 assembly

http://slidepdf.com/reader/full/assembly-56da1b977f196 3/24

EA869 – Prof. Von Zuben DCA/FEEC/Unicamp

5

Questão 7 

Quando um programa faz uso de subrotina, é sabido o momento exato (em relação à seqüência de instruções do programa) em

que a subrotina é chamada (chamada síncrona). Para implementar o desvio, existem recursos de hardware  para preservar o

endereço de retorno e para realizar a atualização do registrador PC. Mas ainda restam duas tarefas a serem executadas pelo

programa (por software) nestas circunstâncias:

• preparar o envio de parâmetros de entrada e o recebimento do resultado, de acordo com a convenção estabelecida entre

programa e subrotina;• preservar, para posterior recuperação, o conteúdo de registradores e outras área de dados que também serão usadas pela

subrotina (esta tarefa poderia ser realizada pela subrotina). Como esta tarefa ocupa tempo de CPU, já que envolve

transferência de dados, só devem ser preservados e posteriormente recuperados os recursos efetivamente compartilhados.

Uma interrupção, por sua vez, embora também represente um desvio na seqüência de execução de instruções e um posterior

retorno à próxima instrução do programa (o retorno vai ocorrer apenas para certos tipos de interrupção), apresenta duas

diferenças básicas em relação às subrotinas:

• é assíncrona, ou seja, pode ocorrer durante a execução de qualquer instrução do programa, já que não é comandada pelo

próprio programa em execução;

• qualquer instrução do repertório da máquina e todo tipo de recurso compartilhável podem ser utilizados após o desvio e

antes do retorno, dependendo do tipo de interrupção e de que rotina vai ser executada.

Um sinal de interrupção muito comumente recebido por um programa em execução em ambientes multiprogramados (em que

mais de um programa está em execução “ao mesmo tempo”) é aquele que leva à liberação da CPU para outro programa em

execução, via chaveamento de contexto. O recurso compartilhado aqui é a CPU como um todo, já que um único programa pode

estar usando a CPU a cada instante. Sendo assim, há troca de posse da CPU entre programas durante a execução de suas

EA869 – Prof. Von Zuben DCA/FEEC/Unicamp

6

instruções. Veja o exemplo a seguir, mostrando uma seqüência de ocupação da CPU quando 2 programas em execução (A e B)

a compartilham.

......

instrução do programa A

instrução do programa B

instrução para chaveamento de contexto  

Sendo assim, indique quem deve realizar o chaveamento de contexto, como ele trabalha para garantir a coerência dos dados dos

programas envolvidos e como que o mecanismo de interrupção implementa o assincronismo (sob o ponto de vista dosprogramas em execução) do chaveamento de contexto.

Capítulo VI: Tópicos Mais Importantes

• Sinais de Controle do Gerador de Seqüência de Interrupção:

MAPEAMENTO INTERNO MAPEAMENTO EXTERNOPUSH PC PUSH PCPUSH PSW PUSH PSWJUMP RS IN CONTRL

JUMP RS

POP PSWPOP PC

Page 4: assembly

7/21/2019 assembly

http://slidepdf.com/reader/full/assembly-56da1b977f196 4/24

EA869 – Prof. Von Zuben DCA/FEEC/Unicamp

7

• mapeamento entre linhas de interrupção e posições de memória: endereços de interrupção

listados no manual do processador.

• a cada linha de interrupção está associada um rotina de serviço. O programador da rotina de

serviço deve instalá-la fazendo uso do endereço de interrupção associado à correspondente

linha de interrupção.

• mais de um dispositivo ligado a uma dada linha de interrupção: mecanismo de polling

Rotina de Serviço

RS: IN STATUS1

Jcond RS1

IN STATUS2

Jcond RS2

...

IN STATUSn

Jcond RSn

• organização dos endereços de interrupção na memória, geradores de seqüência de

interrupção e instalação das rotinas de serviço.

EA869 – Prof. Von Zuben DCA/FEEC/Unicamp

8

• controle do atendimento de interrupções: flag de interrupção, mascaramento seletivo,

mascaramento por nível de prioridade.

• controle do atendimento de interrupções dentro de rotinas de serviço.

• prioridade no atendimento de interrupções.

• exceções internas.

Capítulo VI: ExercíciosQuestão 8: Defina  chaveamento de contexto  e explique sua importância em sistemas

operacionais multiusuários.

 Resp: O chaveamento de contexto é a troca de posse da UCP entre dois programas em

execução (denominados processos). Em ambientes multiprogramados, particularmente em

ambientes multiusuários, é fundamental que ocorra a alternância de posse da UCP por parte

de programas em execução, já que é desejável que todos os programas progridam em sua

execução sem que nenhum deles fique um longo tempo sem a posse da UCP, viabilizando assim

o paralelismo aparente. Um único programa pode estar de posse da UCP a cada instante, mas

a quantidade de ciclos de máquina que podem ser executados por segundo é elevadíssima, de

Page 5: assembly

7/21/2019 assembly

http://slidepdf.com/reader/full/assembly-56da1b977f196 5/24

EA869 – Prof. Von Zuben DCA/FEEC/Unicamp

9

modo que cada programa em execução pode retomar a posse da UCP dezenas e até centenas

(ou mais!) de vezes a cada segundo. Sendo assim, mesmo que um usuário esteja interagindo

intensamente com um programa em execução (por exemplo, fornecendo e recebendo dados

através de interfaces de entrada/saída), este usuário dificilmente será capaz de perceber

qualquer uma das interrupções de execução por que seu programa passou. É fundamental

compreender que o recurso compartilhado aqui é a UCP como um todo, sendo que parte dotempo de processamento da UCP é consumido com a preservação e restauração de conteúdo

de todos os registradores compartilháveis, etapa indispensável durante a troca de posse da

UCP. Isto implica que chaveamento de contexto consome tempo de UCP, durante o qual

nenhum programa progride em sua execução. Logo, a quantidade de chaveamentos de contexto

não pode ser excessiva, para garantir que o tempo de uso da UCP por parte dos programas

seja bem maior que o tempo gasto para chavear de contexto. Muitos processadores possuem

vários conjuntos de “espelhos internos” de todos os seus registradores, permitindo que a

 preservação do estado do processador possa ser feito rapidamente.

......P1 P2 P3CC CC CC  

 

EA869 – Prof. Von Zuben DCA/FEEC/Unicamp

10

Questão 9:

Quais são as diferenças e semelhanças básicas entre o mecanismo de atendimento e

retorno de interrupção e o de chamada e retorno de subrotina?

 Resp:

 Atendimento de interrupção e chamada de uma subrotina têm em comum:

•  preservação do conteúdo do PC e desvio de execução para uma seqüência de instruções S

diferente da seqüência P da qual a instrução corrente faz parte;• retorno à próxima instrução na seqüência P, pela restauração do conteúdo do PC após a

execução da seqüência S.

• todos os registradores compartilhados devem ter seu conteúdo preservado. Por exemplo, no

caso do atendimento de uma interrupção, se o gerador de seqüência de interrupção salvar e

 posteriormente restaurar somente o conteúdo do Registrador de Estado (PSW), então o

 programador da rotina de serviço deve se ocupar também da preservação e posterior

restauração de todos os registradores que estarão disponíveis para uso na rotina de serviço.

 Atendimento de interrupção e chamada de uma subrotina diferem nos seguintes aspectos

básicos:

Page 6: assembly

7/21/2019 assembly

http://slidepdf.com/reader/full/assembly-56da1b977f196 6/24

EA869 – Prof. Von Zuben DCA/FEEC/Unicamp

11

• uma interrupção é normalmente iniciada por um sinal externo (é assíncrona), enquanto a

chamada de subrotina é iniciada por uma instrução do programa (é síncrona);

• numa interrupção, o endereço de desvio é determinado por hardware (Gerador de

Seqüência de Interrupção), enquanto que numa chamada de subrotina o endereço é

especificado no campo de endereço da instrução;

• durante o salto em uma interrupção, além do endereço de retorno (conteúdo do PC),

também é salvo o conteúdo do PSW.

Questão 10: Como viabilizar a execução de rotinas de serviço críticas em arquiteturas que

controlam o atendimento de interrupção via  flag de interrupção? Nesta mesma

arquitetura, como permitir a interrupção seletiva de rotinas de serviço?

 Resp:

Uma rotina de serviço crítica é aquela que não pode ser interrompida uma vez iniciada sua

execução. Sendo assim, basta não executar a instrução EI dentro da rotina de serviço crítica, pois o desvio automaticamente realiza a desabilitação de interrupções em arquiteturas com

 flag de interrupção. Com flag de interrupção, não é possível permitir a interrupção seletiva,

 pois as linhas de interrupção vão estar todas habilitadas ou todas desabilitadas.

EA869 – Prof. Von Zuben DCA/FEEC/Unicamp

12

Questão 11: Seja uma arquitetura em que as microoperações ativadas pelo Gerador de

Seqüência de Interrupção equivalem àquelas associadas à execução das instruções

PUSH PCPUSH PSWMOV ENDi, PSWJUMP (ENDi+1). 

(a) Como é feito o acesso à rotina de serviço de interrupção?

 Resp: É utilizado vetor de interrupção com definição de estado. O conteúdo do endereço ENDi corresponde ao estado inicial da rotina de serviço associada à linha i, enquanto que o

conteúdo do endereço ENDi+1 corresponde ao endereço da rotina de serviço para a linha i.

(b) Explique a função da instrução MOV ENDi, PSW.

 Resp:

Como o conteúdo do endereço ENDi  corresponde ao estado inicial da rotina de serviço

associada à linha i, a instrução acima tem a função de atualizar o PSW com este estado,

imediatamente antes do desvio para execução da rotina de serviço.

Page 7: assembly

7/21/2019 assembly

http://slidepdf.com/reader/full/assembly-56da1b977f196 7/24

EA869 – Prof. Von Zuben DCA/FEEC/Unicamp

13

Questão 12: Com base na figura 6.3 e supondo a ocorrência de uma interrupção

habilitada, explique como se dá a passagem da execução de um programa para a execução

de uma rotina de serviço e posterior retorno ao programa.

 Resp: pg. 156

Questão 13: Quais são as duas situações que levam à necessidade de definição de

prioridade no atendimento de interrupções?

 Resp: 1. mais de um dispositivo associado a uma mesma linha de interrupção;

2. mais de uma linha de interrupção habilitada.

Questão 14: Considerando a existência de 4 linhas de interrupção e levando-se em conta

apenas o tempo de identificação de interrupção (número de testes de linhas de

interrupção), qual dos dois mecanismos de prioridade por varredura tem um melhor

desempenho nos seguintes casos:

seqüência de interrupção: L4, L3, L2, L1

L1, L2, L3, L4

EA869 – Prof. Von Zuben DCA/FEEC/Unicamp

14

 Resp:

 L4, L3, L2, L1: a partir da primeira linha.

 L1, L2, L3, L4: a partir da última linha em que ocorreu o atendimento a um sinal de

interrupção.

Questão 15: Considere uma arquitetura com interrupção vetorizada. Suponha que o

mapeamento gere os endereços 70, 71 e 72 para as 3 interrupções existentes. Admitatambém a existência de 3 rotinas de serviço instaladas nas posições de memória 100, 200 e

300 para o atendimento destas interrupções.

a) considerando que o mecanismo de interrupção é controlado por  flag de interrupção, e

que nenhuma rotina de serviço deve ser interrompida, mostre conteúdos relevantes no

mapa de memória e funções do gerador de seqüência de interrupção.

 Resp:

O gerador de seqüência de interrupção realiza microoperações equivalentes às

microoperações da fase de execução das seguinte instruções:PUSH PC PUSH PSW DI JUMP (ENDi)

Page 8: assembly

7/21/2019 assembly

http://slidepdf.com/reader/full/assembly-56da1b977f196 8/24

EA869 – Prof. Von Zuben DCA/FEEC/Unicamp

15

 

 Mapa de Memória

70 10071 20072 300

100 Rotina de serviço 1...EI

 RTI

200 Rotina de serviço 2...EI

 RTI

300 Rotina de serviço 3...EI

 RTI

EA869 – Prof. Von Zuben DCA/FEEC/Unicamp

16

b) mostre a instalação das rotinas de serviço.

 Resp:

ORG 70

 ADR RS1

 ADR RS2

 ADR RS3

ORG 100 ORG 300

 RS1: Instruções da RS3: Instruções da

 Rotina de Serviço 1 Rotina de Serviço 3

 RTI RTI

ORG 200

 RS2: Instruções da

 Rotina de Serviço 2 RTI

Page 9: assembly

7/21/2019 assembly

http://slidepdf.com/reader/full/assembly-56da1b977f196 9/24

EA869 – Prof. Von Zuben DCA/FEEC/Unicamp

17

c) considerando agora que o controlador de interrupção é externo, que o mascaramento é

feito por máscara de interrupção, e que cada rotina de serviço pode ser interrompida

por sinais das duas outras interrupções, mas não dela mesma, faça:

• defina os bits de máscara de cada rotina;

• complete o mapa de memória com as instruções e operações necessárias para o

funcionamento desejado.

 Resp:

 Rotina: 3 2 1

 Máscara

 Bits para a máscara da Rotina 1: 110

 Bits para a máscara da Rotina 2: 101

 Bits para a máscara da Rotina 3: 011

 Hipótese: RMASK é o endereço do registrador de máscara do controlador de interrupção

externo.

EA869 – Prof. Von Zuben DCA/FEEC/Unicamp

18

 

 Mapa de Memória100 MOV #110, RMASK Rotina de serviço 1

restaura máscara RTI

200 MOV #101, RMASK Rotina de serviço 2

restaura máscara RTI

300 MOV #011, RMASK Rotina de serviço 3

restaura máscara RTI

 XXXX MOV #111, RMASK Programa Principal

Page 10: assembly

7/21/2019 assembly

http://slidepdf.com/reader/full/assembly-56da1b977f196 10/24

EA869 – Prof. Von Zuben DCA/FEEC/Unicamp

19

d) considerando que a rotina de serviço 1 seja crítica e não possa ser interrompida, e que

a rotina de serviço 2 seja prioritária em relação à rotina de serviço 3, não podendo ser

interrompida por esta, qual é o mecanismo de mascaramento de interrupção mais

apropriado para este caso?

 Resp:

 Mascaramento por nível de prioridade, pois existe uma prioridade entre as interrupções, nãohavendo necessidade de mascaramento seletivo. A prioridade é: RS1 > RS2 > RS3.

Questão 16: Suponha que você recebeu a incumbência de realizar uma extensão junto a

um projeto de um microcontrolador, a ser utilizado em um processo industrial que realiza

o controle de temperatura de uma caldeira. A operação adicional a ser incluída se refere à

ativação de um sinal luminoso em um painel caso a temperatura ultrapasse um

determinado valor. Você dispõe dos seguintes elementos:

• um dispositivo que contém um sensor de temperatura e um botão de ajuste. Este

dispositivo emite um sinal DC (compatível com as especificações de entrada do

EA869 – Prof. Von Zuben DCA/FEEC/Unicamp

20

microcontrolador) caso a temperatura ultrapasse um valor que pode ser ajustado

diretamente através da manipulação do botão disponível.

• o pino 19 do microcontrolador, reservado para o atendimento de interrupção, está

disponível.

• 64K de memória RAM para o microcontrolador.

• o manual do microcontrolador, o qual apresenta a seguinte tabela entre pino de

interrupção e endereços de memória:Pino Endereço

16 $0200

17 $0201

18 $0202

19 $0203

• o microcontrolador trabalha com vetor de interrupção.

• a instalação de rotinas de serviço para atendimento de interrupção deve ocupar os

endereços de memória entre $FF00 e $FF3F.

Page 11: assembly

7/21/2019 assembly

http://slidepdf.com/reader/full/assembly-56da1b977f196 11/24

EA869 – Prof. Von Zuben DCA/FEEC/Unicamp

21

• os endereços entre $FF00 e $FF30 já estão ocupados com instruções de outras rotinas

de serviço.

• a rotina de serviço para a ativação de um sinal luminoso em um painel ocupa 15

palavras de memória e foi fornecida a você pelo seu colega de trabalho.

Tarefa: Apresente todos os passos necessários para implementar com sucesso a extensão

do projeto.

 Resp: (discussão em aula)

Capítulo VII

Questão 17: Distinga E/S isolada de E/S mapeada em memória.

 Resp:

Páginas 184 a 188 do livro-texto.

Questão 18: Em uma interface de E/S:

(a) explique a função do Registrador de Estado.

EA869 – Prof. Von Zuben DCA/FEEC/Unicamp

22

 Resp:

 Informa o estado da transferência de E/S, fundamental para a implementação de E/S

condicional, e o estado do dispositivo. Para a UCP, trata-se de um registrador apenas de

leitura. Para o dispositivo, apenas de escrita.

(b) explique a função do Registrador de Dados.

 Resp:

 Armazenagem temporária de dados. Em uma operação de entrada, este registrador écarregado pelo dispositivo e lido pela UCP. Em uma operação de saída, ele é carregado pela

UCP e lido pelo dispositivo.

(c) explique a função do Registrador de Controle.

 Resp:

Usado pela UCP para definir o modo de operação da interface. Para a UCP, trata-se de um

registrador apenas de escrita. Para o dispositivo, apenas de leitura.

Questão 19: Por que o acesso ao registrador de estado de uma interface é de leitura e ao

registrador de controle é de escrita?

Page 12: assembly

7/21/2019 assembly

http://slidepdf.com/reader/full/assembly-56da1b977f196 12/24

EA869 – Prof. Von Zuben DCA/FEEC/Unicamp

23

 Resp:

Pelas funcionalidades apresentadas na questão anterior.

Questão 20: Como se faz uma transferência de dados entre UCP e uma interface sem

perda de informação?

 Resp: Páginas 189 e 190 do livro-texto.

Questão 21: Como se faz uma transferência de dados entre dispositivos (por exemplo,

interface e periférico) que operam em bases de tempo distintas?

 Resp:

 Dois procedimentos muito utilizados são aquele que recorre ao sinal de strobe e aquele que

emprega o mecanismo de handshaking. Somente o mecanismo de handshaking, que envolve

troca de informação entre as duas partes, permite uma maior confiabilidade de comunicação.

 As figuras a seguir ilustram a seqüência de operações associadas a cada caso, sendo que a

transmissão pode ser ativada tanto pela fonte como pelo destino. No caso do sinal de strobe, há

sensibilidade à borda de subida.

EA869 – Prof. Von Zuben DCA/FEEC/Unicamp

24

 

FONTE DESTINO

Dados

Strobe

Leitura dos Dados

Dados

Strobe

FONTE DESTINO

Dados

Strobe

Leitura dos Dados

Dados

Strobe

Observação: Strobe é um

sinal binário de

comunicação, enquanto

que Dados é um

barramento com uma ou

mais linhas de

informação (as quais

 podem estar em 0 ou 1).

Portanto, a indicação deque Dados foi de 0 para

1 é uma notificação de

que há dados válidos

(informação) no barra-

mento. De forma

equivalente, Leitura dos

 Dados é apenas um

indicador do momento

em que a leitura do

barramento de Dados foi

realizada. Logo, apenas

Strobe é um sinal físico.

Page 13: assembly

7/21/2019 assembly

http://slidepdf.com/reader/full/assembly-56da1b977f196 13/24

EA869 – Prof. Von Zuben DCA/FEEC/Unicamp

25

 

FONTE DESTINO

Pronto para Dados

DadosDados Válidos

Pronto para Dados

Dados

Dados Válidos

FONTE DESTINO

Dados

DadosDados Válidos

Dados Aceitos

Dados Válidos

Dados Aceitos

Observação: Vale a

mesma explicação

 para Dados, ou seja, a

notação binária

apenas está indicando

quando há dados

válidos no barramento.

 Já Dados Válidos,

 Dados Aceitos e

Pronto para Dados

são sinais binários de

comunicação. As

linhas verticais indi-

cam um possível

momento de leitura.

EA869 – Prof. Von Zuben DCA/FEEC/Unicamp

26

Questão 22: Na existência de DMA, como a UCP e o controlador DMA podem

compartilhar barramentos? Quais são as vantagens e desvantagens de cada modo de

compartilhamento?

 Resp:

 Burst ou rajada, roubo de ciclo e DMA transparente (ver pgs. 201 e 202 do livro texto).

• rajada: faz com que a transferência DMA seja rápida, pois o controlador DMA tem uso

exclusivo dos barramentos assim que a transferência tem início. Neste caso, durante todo otempo da transferência a UCP não tem acesso aos barramentos.

• roubo de ciclo: é um caso intermediário.

•  DMA transparente: a UCP tem sempre acesso aos barramentos, quando necessário. É a

situação mais desejada em ambientes multiusuários, em que há muita concorrência pela

UCP, mas cria-se a necessidade de detecção de ciclos de máquina da UCP que não irão

utilizar o barramento, o que pode ser de difícil implementação prática.

Questão 23: Explique como é feita a transferência de dados via DMA, incluindo (em sua

explicação) todos os registradores de interface necessários.

Page 14: assembly

7/21/2019 assembly

http://slidepdf.com/reader/full/assembly-56da1b977f196 14/24

EA869 – Prof. Von Zuben DCA/FEEC/Unicamp

27

 Resp:

 A UCP inicia a transferência de/para posições contíguas de memória setando os bits

correspondentes do registrador de controle, fornecendo o endereço inicial (EI) e o tamanho do

bloco a ser transferido (TB). O controlador DMA, a cada transferência, incrementa EI e

decrementa TB.

Questão 24: O que é um bit de paridade?

 Resp: Em transferências de dados em que existe alguma probabilidade não desprezível de

ocorrência de erros na transmissão, sua detecção pode ser realizada pela verificação da

 paridade da informação transmitida (número par de bits 1). O bit de paridade introduz assim

uma redundância de informação, de modo que é possível detectar qualquer mudança de 1 bit a

cada caractere transmitido.

Questão 25: No caso de comunicação interface/dispositivo, distinga os modos de

transferência serial assíncrona e síncrona.

 Resp: Páginas. 198-200 do livro-texto.

EA869 – Prof. Von Zuben DCA/FEEC/Unicamp

28

Capítulo VIII

Questão 26: Seja 11010010 o conteúdo de um registrador de 8 bits. O que este código

binário representa, considerando que ele é:

(a) uma representação binária sem sinal;

21 + 24 +26  +27  = 2 + 16 + 64 + 128 = 21010

(b) uma representação binária com sinal e magnitude;

− (21 + 24 +26 ) = − (2 + 16 + 64) = − 8210

(c) uma representação em complemento de 2;

− complemento(11010010 −  00000001) = − complemento(11010001)

= − (00101110) = − (21 + 22 +23 +25) = − (2 + 4 + 8 + 32) = − 46 10

(d) um código hexadecimal;

 D2 H  

(e) um código octal;3228  

Page 15: assembly

7/21/2019 assembly

http://slidepdf.com/reader/full/assembly-56da1b977f196 15/24

EA869 – Prof. Von Zuben DCA/FEEC/Unicamp

29

(f) um código BCD;  (não existe código BCD para 11012)

(g) uma representação em ponto fixo, com sinal, 4 bits para a parte inteira, 3 bits para a

parte fracionária e fator de escala 21;

− 20,510 

(h) um código ASCII (ignore o bit mais significativo);

 R

(i) uma representação em ponto flutuante normalizado, com o primeiro bit sendo o sinal,

os próximos 4 referentes à mantissa e os últimos 3 ao expoente.

− 2,510 

(j) uma representação em ponto flutuante com bit escondido, com o primeiro bit sendo o

sinal, os próximos 4 referentes à mantissa e os últimos 3 ao expoente.

− 3,2510 

EA869 – Prof. Von Zuben DCA/FEEC/Unicamp

30

Questão 27: Explicite todos os números que podem ser representados exatamente

considerando a representação numérica de ponto flutuante normalizado com mantissa de

4 bits (codificada em sinal+magnitude) e expoente de 2 bits (codificado em complemento

de 2), na forma:

, 1

magnitude expoentesinal

Expoente: 01: +1; 00: 0; 11: − 1; 10: − 2

 Magnitude: 100: 2− 1; 101: 2− 1+2− 3; 110: 2− 1+2− 2; 111: 2− 1+2− 2+2− 3 

− 1,75; − 1,50; − 1,25; − 1,00; − 0,875; − 0,750; − 0,625; − 0,500; − 0,4375; − 0,3750; − 0,3125;

− 0,2500; − 0,21875; − 0,18750; − 0,15625; − 0,12500; 0,12500; 0,15625; 0,18750; 0,21875;

0,2500; 0,3125; 0,3750; 0,4375; 0,500; 0,625; 0,750; 0,875; 1,00; 1,25; 1,50; 1,75.

Questão 28: Explicite todos os números que podem ser representados exatamenteconsiderando a representação numérica de ponto flutuante normalizado com mantissa de

Page 16: assembly

7/21/2019 assembly

http://slidepdf.com/reader/full/assembly-56da1b977f196 16/24

EA869 – Prof. Von Zuben DCA/FEEC/Unicamp

31

3 bits (codificada em sinal+magnitude) e expoente de 3 bits (codificado em complemento

de 2), na forma:

Representação:

 , 1

mantissa expoente

 

Combinações possíveis para a mantissa:

0,10 0,11 1,10 1,110,5 0,75 -0.5 -0,75

Combinações possíveis para o expoente

000 001 010 011 111 110 101 1000 1 2 3 -1 -2 -3 -4

Números representáveis:

-6 | -4 | -3 | -2 | -1,5 | -1 | -0,75 | -0,5 | -0,375 | -0,25 |

-0,1875 | -0,125 | -0,09375 | -0,0625 | -0,046875 |

-0,03125 | 0,03125 | 0,046875 | 0,0625 | 0,09375 |

0,125 | 0,1875 | 0,25 | 0,375 | 0,5 | 0,75 | 1 | 1,5 | 2 | 3 | 4 | 6

EA869 – Prof. Von Zuben DCA/FEEC/Unicamp

32

Questão 29: Represente os números a seguir utilizando ponto fixo, com fator de escala 101,

dois dígitos para a parte fracionária e cinco dígitos no total: 432,4810; 54321,510; 0,043210.

Comente cada uma das representações obtidas em relação ao efeito produzido sobre os

números iniciais.

043,24 (perda de precisão por truncamento)

432,15 (overflow)

000,00 (underflow, perda de precisão por truncamento)Questão 30: Seja um computador com palavra de 16 bits com a qual são representados

números reais usando a representação em ponto flutuante normalizado, com um bit de

sinal, mantissa de 11 bits e expoente de 4 bits. A base numérica utilizada é a binária, não

há bit escondido e o expoente é representado em complemento de 2. Represente os

números 66,2510 e 4,62510.

66,2510 = 64 + 2 + 0,25 = 26  + 21 + 2− 2 = (2− 1 + 2− 6  + 2− 9)*27  

 Representação: 0 10000100100 0111

4,62510 = 4 + 0,5 + 0,125 = 22 + 2− 1 + 2− 3 = (2− 1 + 2− 4 + 2− 6 )*23 

 Representação: 0 10010100000 0011

Page 17: assembly

7/21/2019 assembly

http://slidepdf.com/reader/full/assembly-56da1b977f196 17/24

EA869 – Prof. Von Zuben DCA/FEEC/Unicamp

33

Questão 31: A adição (ou subtração) em ponto flutuante se faz do mesmo modo que em

ponto fixo?

Não. Em representação que utiliza ponto flutuante, não é possível realizar a adição (ou

subtração) com exponentes diferentes. Os seguintes passos devem ser adotados:

1. identificar o número com o menor expoente;

2. fazer o menor expoente igual ao maior expoente pela divisão da mantissa pelo mesmo fatorutilizado para aumentar o expoente;

3. adicionar (ou subtrair) as mantissas;

4. se necessário, normalizar o resultado.

Questão 32: Apresente todos os passos necessários para realizar a adição dos números

66,2510 e 4,62510, representados conforme as especificações da questão 30.

• o número 4,62510 tem o menor expoente;

• igualando ao maior expoente resulta:

4,62510 = 4 + 0,5 + 0,125 = 22 + 2− 1 + 2− 3 = (2− 5 + 2− 8  + 2− 10)*27  

 Representação: 0 00001001010 0111

EA869 – Prof. Von Zuben DCA/FEEC/Unicamp

34

• adicionando: 0 10000100100 0111

0 00001001010 0111 +

0 10001101110 0111

O resultado fica: (2− 1 + 2− 5 + 2− 6 + 2− 8  + 2− 9 + 2− 10)*27  = 70,87510

• não há necessidade de normalizar o resultado.

Questão 33: Dado um inteiro decimal arbitrário contendo  n  dígitos, qual deve ser o

número mínimo de bits ( m) de sua representação em notação binária?

2m − 1 ≥ 10n − 1! 2m ≥ 10n 

log102m ≥ n ! m.log102 ≥ n 

0,30103.m ≥ n ! m ≥ 3,3219.n 

Questão 34: Por que a seqüência de passos a seguir pode não ter fim quando

implementada em um computador?

Page 18: assembly

7/21/2019 assembly

http://slidepdf.com/reader/full/assembly-56da1b977f196 18/24

EA869 – Prof. Von Zuben DCA/FEEC/Unicamp

35

Passo1) soma = 0;

Passo2) soma = soma + 0,1;

Passo3) enquanto soma≠1, vá para o Passo2; senão, vá para o Passo 4;

Passo4) FIM.

Como a representação binária de 0,1 não pode ser exata, a soma de 10 representações binárias

de 0,1 vai produzir um valor diferente de 1,0, ao menos para máquinas que trabalham com

maior precisão.

Questão 35: Por que a representação octal é bem menos utilizada que a representação

hexadecimal?

Porque as máquinas são projetadas para operar os bits individualmente, ou em “grupos” de 4, 8,

16, 32 ou 64 bits. O número de bits agrupados não são múltiplos de 3, mas são todos múltiplos

de 4, prejudicando a representação octal ao mesmo tempo em que favorece a representação

hexadecimal.

Questão 36: Existe um algoritmo para conversão de números inteiros positivos em

representação decimal para representação binária?

EA869 – Prof. Von Zuben DCA/FEEC/Unicamp

36

Sim. O algoritmo é dado pela divisão contínua do número por 2, tomando o resto de cada

divisão como os bits da representação binária, só que em ordem invertida.

Exemplo: conversão de 15710 para representação binária:

157 ÷ 2 = 78  R = 178 ÷ 2 = 39  R = 039 ÷ 2 = 19  R = 119 ÷ 2 = 9  R = 19 ÷ 2 = 4  R = 14 ÷ 2 = 2  R = 02 ÷ 2 = 1  R = 01 ÷ 2 = 0  R = 1

Resultado: 15710 = 100111012 

Questão 37: Existe um algoritmo para conversão de números fracionários positivos em

representação decimal para representação binária?

Sim. O algoritmo é dado pelo produto contínuo do número por 2, considerando sempre apenas

a parte fracionária (até que esta se anule). A parte inteira é tomada como os bits da

representação binária. Exemplo:

Page 19: assembly

7/21/2019 assembly

http://slidepdf.com/reader/full/assembly-56da1b977f196 19/24

EA869 – Prof. Von Zuben DCA/FEEC/Unicamp

37

Conversão de 0,310 para representação binária:

0,3 × 2 = 0,6  R = 00,6 × 2 = 1,2  R = 10,2 × 2 = 0,4  R = 00,4 × 2 = 0,8  R = 00,8 × 2 = 1,6  R = 1

0,6×

 2 = 1,2  R = 1...

Resultado: 0,310 = 0,010011...2 

Questão 38: Quais são as vantagens e desvantagens do código BCD?

O código BCD (Binary-Coded Decimal) codifica os dígitos decimais individuais em grupos de

4 bits. Esta codificação pode ser feita de várias formas, sendo que a forma natural é apresentada

no livro-texto.

EA869 – Prof. Von Zuben DCA/FEEC/Unicamp

38

Um exemplo de adição utilizando o código BCD é apresentado a seguir, enfatizando o

tratamento agrupado dos bits:

1 9 4 2 0001 1001 0100 0010

+ 2 3 7 9 0010 0011 0111 1001

4 3 2 1 0100 0011 0010 0001

vantagem:• corresponde a uma forma de representação direta, sendo encontrado em aplicações que

requerem pouca armazenagem, como em calculadoras de bolso e relógios digitais.

desvantagens:

• requer hardware mais complexo para implementar as operações aritméticas (já foi mais

significativo)

• conduz a um uso ineficiente de memória, usando 20% a mais de bits do que o necessário para

representar um número decimal (4 bits contra 3,3219)

Page 20: assembly

7/21/2019 assembly

http://slidepdf.com/reader/full/assembly-56da1b977f196 20/24

EA869 – Prof. Von Zuben DCA/FEEC/Unicamp

39

Questão 39: Existem outras formas de representação numérica binária além da posicional?

Sim. A posicional é denominada representação pura ou natural. Outras representações importantes são

aquelas que procuram manter constante e igual a 1 a distância de  Hamming entre as representações

binárias de dois números inteiros decimais consecutivos. O mais conhecido é o código de Gray,

ilustrado a seguir para representação em 4 bits.

Valor decimal Binário natural Código de Gray0 0000 0000

1 0001 0001

2 0010 0011

3 0011 0010

4 0100 0110

5 0101 0111

6 0110 0101

7 0111 0100

8 1000 1100

9 1001 1101

10 1010 1111

11 1011 111012 1100 1010

13 1101 1011

14 1110 1001

15 1111 1000

EA869 – Prof. Von Zuben DCA/FEEC/Unicamp

40

Questão 40: Por que existem tantas variedades de formatos para representação em ponto

flutuante?

A variedade de formatos é uma conseqüência da necessidade de definição de 5 requisitos

básicos independentes:

1. o número total de bits a ser utilizado;

2. a representação da mantissa (complemento de 2, sinal+magnitude, etc.);

3. a representação do expoente (complemento de 2, sinal+magnitude, polarização, etc.);4. a proporção de bits reservada para mantissa e expoente;

5. a localização da mantissa e do expoente.

Representação não-numérica (código ASCII)

• ASCII: American Standard Code for Information Interchange (7 bits)

• para obter o código binário de um caractere, tome os 3 bits mais significativos da coluna em

que ele aparece e os 4 bits menos significativos da linha em que ele aparece. Exemplo: o

código ASCII para W  é 10101112 ou 57H.

Page 21: assembly

7/21/2019 assembly

http://slidepdf.com/reader/full/assembly-56da1b977f196 21/24

EA869 – Prof. Von Zuben DCA/FEEC/Unicamp

41

 

Código binário ASCII (ISO - 7 bits)

b6b5b4  0 1 2 3 4 5 6 7

b3b2b1b0  000 001 010 011 100 101 110 111

0 0000 NUL DLC SP 0 @ P p

1 0001 SOH DC1 ! 1 A Q a q

2 0010 STX DC2″   2 B R b r

3 0011 ETX DC3 # 3 C S c s

4 0100 EOT DC4 $ 4 D T d t

5 0101 ENQ NAK % 5 E U e u

6 0110 ACK SYN & 6 F V f v

7 0111 BEL ETB ′  7 G W g w

8 1000 BS CAN ( 8 H X I x

9 1001 HT EM ) 9 I Y h y

A 1010 LF SUB * : J Z j z

B 1011 VT ESC + ; K [ k {

C 1100 FF FS , < L \ l |

D 1101 CR GS −  = M ] m }

E 1110 SO RS . > N ^ n ~F 1111 SI VS / ? O _ o DEL

Caracteres de controle Caracteres imprimíveis

EA869 – Prof. Von Zuben DCA/FEEC/Unicamp

42

Capítulo IX: Tópicos Mais Importantes

• entrada do montador: sequências de caracteres (programa assembly /código fonte).

• saída do montador: conjunto de palavras de máquina (bits) (código objeto).

• formato geral do programa com instruções assembly (até 4 campos):

[rotulo] <operacao> [<operando>] [;comentario]

• os campos indicados com [ ] podem ser opcionais, sendo que os campos são separados por

espaços ou tabulações.

Pseudo-instruções

• além das instruções do processador, um programa assembly pode conter pseudo-instruções,

as quais, além de instruir o montador, estabelecem a conexão entre referências simbólicas e

valores efetivamente referenciados.

END

EQU → cria um nome simbólico associado a um valor de um endereço:

DATA EQU $6000PROGRAM EQU $4000

Page 22: assembly

7/21/2019 assembly

http://slidepdf.com/reader/full/assembly-56da1b977f196 22/24

EA869 – Prof. Von Zuben DCA/FEEC/Unicamp

43

ORG → estabelece a origem para o segmento seguinte de instruções ou dados:

ORG PROGRAM

MOVE.W $6000, D0

MOVE.W D0, $6002

DS.size n → reserva espaço em memória para n variáveis de tamanho size. É precedida por

um rótulo que define um nome simbólico para a variável:

VALUE DS.W 1

DC.size n → reserva espaço e define o conteúdo da memória com valor n.

LABEL DC.W 1

Tarefas de um montador

• dependem de características específicas do processador e da sintaxe da linguagem simbólica,

além do tipo de carregador.

Funções básicas:

EA869 – Prof. Von Zuben DCA/FEEC/Unicamp

44

1. determinar o comprimento de cada instrução →  montador precisa conhecer quantos

operandos são requeridos p/ cada instrução + modos de endereçamento desses operandos.

2. substituir mnemônicos de instruções e modos de endereçamento dos operandos pelos

equivalentes binários.

3. resolver e traduzir as expressões e os literais no campo de operandos para representações

binárias.

4. determinar posições de memória, relativas ao programa, para os endereços simbólicos(rótulos).

5. substituir todas as referências a um endereço simbólico pelo endereço binário (efetivo)

correspondente.

• em algumas situações → programa completo está dividido em diversos segmentos a serem

combinados posteriormente.

6. marcar todas as referências simbólicas não resolvidas

7. marcar os endereços simbólicos externamente referenciáveis

Page 23: assembly

7/21/2019 assembly

http://slidepdf.com/reader/full/assembly-56da1b977f196 23/24

EA869 – Prof. Von Zuben DCA/FEEC/Unicamp

45

• portanto, se existirem referências simbólicas cruzadas entre segmentos, não é papel do

montador resolver essas referências, mas ele deve detectá-las e assinalá-las para posterior

resolução.

• cada símbolo referenciável externamente é marcado e colocado à disposição para outros

segmentos.

Tabelas de instrução estáticas

• descrevem para cada instrução ou pseudo-instrução o código de máquina e quantas palavras

de memória são necessárias para armazená-la.

• Tabela de Instruções de Máquina (TIM): contém a informação necessária p/ permitir

tradução de um mnemônico para o código de máquina correspondente, além de rotinas para

tratamento de operandos. Portanto, apresenta 2 campos obrigatórios: mnemônico e sequência

de bits associada (C.O.). Se o processador tem instruções de comprimento variável, o

comprimento da instrução também deve estar presente.• Tabela de Pseudo-Instruções (TPI): mantém informação semelhante à TIM, porém voltada

para pseudo-instruções. Não há código associado, mas pode haver um comprimento

associado.

EA869 – Prof. Von Zuben DCA/FEEC/Unicamp

46

Montador

TPI

TIM

Código deMáquina

ProgramaAssembly

STDSE

DRLpasso 1passo 2

 

Tabelas Dinâmicas

• Tabela de símbolos (TS): associa os símbolos com os códigos binários correspondentes

(endereços).

• Dicionário de Símbolos Externos (DSE): contém os símbolos que podem ser referenciados

externamente ou são definidos externamente.

• Diretório para Relocação e Ligação (DRL): armazena todos os endereços relocáveis.

Page 24: assembly

7/21/2019 assembly

http://slidepdf.com/reader/full/assembly-56da1b977f196 24/24

EA869 – Prof. Von Zuben DCA/FEEC/Unicamp

47

Capítulo IX: Exercícios

Questão 41: No processo de tradução de um programa escrito em linguagem de

montagem (geração do código binário correspondente), responda:

a) qual é a função da Tabela de Instruções de Máquina?

b) qual é a função da Tabela de Pseudo-instruções?

c) qual é a função da Tabela de Símbolos?

Questão 42: Levante as razões pelas quais existe pelo menos uma linguagem Assembly

para cada processador.