assembly
DESCRIPTION
Lista exercicios assemblyTRANSCRIPT
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
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.
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
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
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:
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.
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)
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
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
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.
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?
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.
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.
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
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
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
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?
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:
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)
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.
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
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
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.
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.