- Questão I
(valor 3.0 pts)
- Questão II
(valor 3.0 pts)
- Questão III
(valor 1.5 pt)
- Questão IV
(valor 3.0 pts)
Questão I (valor 3.0)
I.1) (valor 0.5) 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 subortina?
Tanto o atendimento de uma interrupção como a chamada de uma rotina tem em comum
- o desvio a uma sequência de instruções S diferente da sequência
P à qual a instrução corrente faz parte; e
- o retorno à próxima instrução na sequência P (que estava
disponível no contador de programa PC antes do desvio)
após a execução da sequência S.
Para suportar isso, em ambos os casos deve-se salvar o endereço da próxima
instrução na sequência P disponível no contador de programa PC (0.1 pt)
antes de
carregar neste o endereço da primeira instrução da sequência S. Assim
que terminar a execução da sequência S deve-se restaurar o conteúdo
do PC (0.1 pt) para continuar a execução correta da sequência P.
Os dois mecanismos, porém, se diferem basicamente em três pontos:
- uma interrupção é normalmente iniciada por um sinal externo,
enquanto a chamada de subrotina é por uma instrução; (0.1 pt)
- numa interrupção o endereço da sequência de instrução S é determinado
por hardware (Gerador de Sequência de Interrupção), enquanto
numa chamada de subrotina o endereço é especificado no campo
de endereço da instrução; (0.1 pt) e
- numa interrupção é necessário ainda salvar o estado da UCP (conteúdo
do registrador de estado), para garantir que a sequência P
interrompida retome a sua execução com o mesmo estado anterior. (0.1 pt)
I.2) (valor 1.0) Seja uma arquitetura em que as microoperações
ativadas pelo Gerador de Sequência de Interrupção equivalem às microoperações
das fases de execução das instruções
PUSH |
PC |
PUSH |
PSW |
JUMP |
(Endi) |
-
(0.5 pt) Como é feito o acesso à rotina de serviço
de interrupção?
O modo de endereçamento da instrução JUMP é indireto,
isto é, o acesso à rotina de serviço é feito através da leitura
do conteúdo da palavra no endereço Endi.
Endi é
o endereço de interrupção e (Endi),
o vetor de interrupção.
É uma interrupção vetorizada.
-
(0.5 pt) Explique a função das microoperações
correspondentes à instrução PUSH PSW.
Como uma interrupção pode ocorrer entre duas instruções quaisquer
e vimos que existem instruções que dependem do resultado da instrução anterior,
como
é importante salvar o estado da UCP (conteúdo do registrador de estado
PSW) antes de desviar para a rotina de serviço. Assim, pode-se
restaurar o estado da UCP antes da retomada da execução interrompida,
de forma como nada tivesse acontecido.
I.3) (valor 1.5) Considere uma arquitetura com 3 linhas de interrupção:
L1, L2 e L3. O programa principal estará armazenado no endereço de memória 2000,
enquanto as rotinas de serviço associadas às linhas L1, L2 e L3 estarão armazenadas nos
endereços de memória 700, 900 e 1100, respectivamente. Cada rotina de serviço poderá ser
interrompida pelas outras linhas, mas não pela prórpia linha. A arquitetura usa máscara de
interrupção nos 3 bits menos significativos do PSW. Suponha que os endereços de memória
dos vetores de interrupção para L1, L2 e L3 sejam 24, 28 e 32, respectivamente.
Suponha também que o Gerador de Sequência de Interrupção gere sinais de controle
equivalente à fase de execução das seguintes instruções:
PUSH |
PC |
PUSH |
PSW |
MOV |
Endi, PSW |
JUMP |
(Endi+1) |
Faça um mapa de memória (de 16 bits) mostrando dados e/ou instruções no programa
principal, rotinas de serviço e Tabelas de Vetores de Interrupção, necessários
para o funcionamento descrito.
Endereço |
Conteúdo |
Comentários |
|
: |
|
24 |
1102 |
o estado no qual a rotina de serviço deve ser executada (0.15 pt) |
25 |
70010 |
Endereço da rotina de serviço para L1 (0.15 pt) |
28 |
1012 |
o estado no qual a rotina de serviço deve ser executada (0.15 pt) |
29 |
90010 |
Endereço da rotina de serviço para L2 (0.15 pt) |
32 |
0112 |
o estado no qual a rotina de serviço deve ser executada (0.15 pt) |
33 |
110010 |
Endereço da rotina de serviço para L3 (0.15 pt) |
|
: |
|
700 |
: |
Início da Rotina de Seriço correspondente à linha L1 (0.1 pt) |
|
: |
|
|
RTI |
|
900 |
: |
Início da Rotina de Seriço correspondente à linha L2 (0.1 pt) |
|
: |
|
|
RTI |
|
1100 |
: |
Início da Rotina de Seriço correspondente à linha L3 (0.1 pt) |
|
: |
|
|
RTI |
|
2000 |
MOV #111,PSW |
Nenhuma linha é mascarada (0.3 pt) |
|
: |
|
Observe que consideremos nesta solução que outros bits do registrador
de estado PSW são sempre iniciados com 0.
Questão II (valor 3,0)
II.1) (valor 0,5)
Associe ao tipo de controle de transferência de dados -
E/S Controlada por Programa (P) e/ou E/S por Interrupção (I) -
as características abaixo (as opções P e I devem ser utilizadas no mínimo duas vezes cada):
a) laço de espera; ( P ) e ( -
)
b) transferência controlada por UCP; ( P ) e ( I )
c) teste do estado do dispositivo; ( P ) e ( -
)
d) transferência sob demanda do periférico; ( I ) e ( -
)
e) melhor uso da UCP; ( I ) e ( -
)
II.2) (valor 1,0)
Em uma interface de E/S:
(a) explique a função do Registrador de Dados.
O Registrador de Dados é utilizado como um armazenador temporário de dados, que estão sendo transferidos por meio da interface.
(b) explique a função do Registrador de Controle.
O Registrador de Controle é utilizado para estabelecer modos de operação da interface, como leitura ou escrita.
(c) explique a função do Registrador de Estado.
O Registrador de Estado é utilizado para armazenar o estado da interface e informações relevantes a respeito do dispositivo periférico a ela conectado, como por exemplo se o dispositivo gerou uma interrupção.
II.3) (valor 1,5)
Considere uma transmissão serial assíncrona que inclui um bit de paridade e um stop bit no fim de cada caracter para aumentar a confiabilidade e facilitar a sincronização, respectivamente. Qual é a taxa de informação por bit transmitido (tpbt)

ao enviarmos a seqüência de caracteres EA869? O código ASCII dos caracteres é dado na forma:
E: 1000101 A: 1000001 8: 0111000 6: 0110110 9: 0111001
Para cada caracter transmitido, temos 1 start bit, 7 bits de informação, 1 bit de paridade e 1 stop bit, ou seja, para cada 7 bits de informação temos 10 bits transmitidos, o que implica que tpbt = 70%.
Questão III (valor 1,5)
III.1) (valor 0,5)
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: 769,3410; 45893,310; 0,032710. Comente cada uma das representações obtidas em relação ao efeito produzido sobre os números iniciais.
769,3410 = 76,93410 ´
101 Representação: 076,93 (perda de precisão por truncamento)
45893,310 = 4589,3310 ´
101 Representação: 589,33 (overflow)
0,032710 = 0,0032710 ´
101 Representação: 000,00 (underflow, perda de precisão por truncamento)
III.2) (valor 1,0)
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 mantissa de 10 bits e expoente de 5 bits. A base numérica utilizada é a binária, e o expoente é representado em complemento de 2.
a) qual é o maior número positivo representável?
É aquele que apresenta a maior mantissa e o maior expoente:
0 ,1111111111 01111 = (2-1 + 2-2 +2-3 +2-4 +2-5 +2-6 +2-7 +2-8 +2-9 +2-10)*2+15
b) qual é o menor número positivo representável?
É aquele que apresenta a menor mantissa e o menor expoente:
0 ,1000000000 10000 = 2-1*2-16= 2-17
c) qual é a precisão da mantissa? Justifique.
A precisão da mantissa é função do número de bits utilizado para representá-la, sem levar em consideração o fator de escala dado pelo valor do expoente. Portanto, a precisão da mantissa é 2-10.
d) represente o número 7,12510.
A representação binária de 7,12510 é dada por 111,0012 = 2+2 + 2+1 +20 +2-3 = (2-1 + 2-2 +2-3 +2-6)*2+3.
Na notação em ponto flutuante especificada, temos:
0 ,1110010000 00011
Questão IV (valor 3,0)
IV.1) (valor 1.0) No processo de tradução de um programa
escrito em linguagem de montagem (geração do código binário correspondente),
quais são as informações (tabelas) requeridas pelo montador durante a sua
execução? E quais são as informações (tabelas) geradas pelo montador?
Justifique.
Um montador de dois passos requer as seguintes informações durante o seu
processamento:
- Programa em linguagem de assembly a ser traduzido no
primeiro e no segundo passos; (0.2 pt)
- Tabela de Operações de Máquina, para calcular o tamanho
do código binário (e resolver as referências simbólicas) no primeiro
passo, e
obter tanto o código de operação como as rotinas
para tratar o campo de operando de cada instrução no segundo
passo; (0.2 pt)
- Tabela de Pseudo-operações, para calcular o tamanho
do código binário no primeiro passo e obter as rotinas
para tratar o campo de operando de cada pseudo-instrução
no segundo passo. (0.2 pt)
A partir destas informações, ele gera
- no primeiro passo: a Tabela de símbolos, onde estão definidos
os endereços processáveis de cada rótulo utilizado
no programa em assembly; e (0.2 pt)
- no segundo passo: o código binário do programa. (0.2 pt)
IV.2) (valor 2.0) Seja o seguinte programa-fonte em uma
linguagem assemby:
|
ORG |
0300H |
PORT: |
EQU |
1345H |
INICIO: |
IN |
PORT |
|
MOV |
DADO,R0 |
LACO: |
SUB |
Acc,RESTO |
|
DCR |
R0 |
|
JZERO |
FIM |
|
JUMP |
LACO |
FIM: |
MOV |
Acc,RESTO |
|
HLT |
|
DOIS: |
DB |
02H |
DADO: |
DB |
30H |
RESTO: |
DS |
1 |
|
END |
|
Dadas a Tabela de Operação de Máquina e a Tabela de
Pseudo-operações abaixo, determinar os seguintes produtos gerados pelo Montador:
- (0.7 pt) Tabela de Símbolos, ao final do passo 1;
- (1.3 pt) Código de Máquina, ao final do passo 2.
Tabela de Operações de Máquina |
Instrução |
C.O. |
Comprimento (bytes) |
IN end |
44 |
3 |
MOV end,R0 |
52 |
3 |
SUB Acc,end |
33 |
3 |
DCR R0 |
61 |
1 |
JZERO |
45 |
3 |
JUMP end |
27 |
3 |
MOV Acc,end |
50 |
3 |
HLT |
00 |
1 |
Tabela de Pseudo-operações |
Instrução |
Comprimento (bytes) |
ORG |
0 |
EQU |
0 |
DB |
1 |
DS n |
n |
END |
0 |
No passo 1 de montagem são resolvidos os rótulos, ou referências
simbólicas, subsituindo-os pelos endereços correspondentes. Isso é feito
varrendo o programa, instrução por instrução, computando o espaço necessário
para o código binário correspondente, que é armazanado no registrador LC:
Rótulo |
Instrução |
Operando |
Comentários |
|
ORG |
0300H |
LC = 300H. O endereço da próxima instrução é 300H. |
PORT: |
EQU |
1345H |
LC = 300H. O comprimento da pseudo-operação EQU é 0. Armazenar
na tabela de símbolos a definição do rótulo PORT. |
INICIO: |
IN |
PORT |
LC = 300H. O comprimento da instrução é 3. Armazenar
na tabela de símbolos a definição do rótulo INICIO. |
|
MOV |
DADO,R0 |
LC = 303H. O comprimento da instrução é 3. |
LACO: |
SUB |
Acc,RESTO |
LC = 306H. O comprimento da insrução é 3. Armazenar
na tabela de símbolos a definição do rótulo LACO. |
|
DCR |
R0 |
LC = 309H. O comprimento da instrução é 1. |
|
JZERO |
FIM |
LC = 30AH. O comprimento da instrução é 3. |
|
JUMP |
LACO |
LC = 30DH. O comprimento da instrução é 3. |
FIM: |
MOV |
Acc,RESTO |
LC = 310H. O comprimento da instrução é 3. Armazenar
na tabela de símbolos a definição do rótulo FIM. |
|
HLT |
|
LC = 313H. O comprimento da instrução é 1. |
DOIS: |
DB |
02H |
LC = 314H. O comprimento do dado é 1. Armazenar
na abela de símbolos a definição do rótulo DOIS. |
DADO: |
DB |
30H |
LC = 315H. O comprimento do dado é 1. Armazenar
na abela de símbolos a definição do rótulo DADO. |
RESTO: |
DS |
1 |
LC = 316H. O comprimento do espaço reservado é 1. Armazenar
na abela de símbolos a definição do rótulo RESTO. |
|
END |
|
LC = 317H. Fim da Montagem. |
e gerando a seguinte tabela de símbolos: (Cada rótulo vale 0.1 pt)
Tabela de Símbolos |
Rótulo |
Endereço |
PORT |
1345H |
INICIO |
300H |
LACO |
306H |
FIM |
310H |
DOIS |
314H |
DADO |
315H |
RESTO |
316H |
No passo 2 de montagem é gerado o código binário, de acordo com os códigos de operação
fornecidos na Tabela de Operações de Máquina e os rótulos definidos na Tabela de Símbolos:
(Cada instrução/pseudo-instrução vale 0.1 pt.)
Rótulo |
Instrução |
Operando |
Código Binário |
Código Hexadecimal |
|
ORG |
0300H |
|
|
PORT: |
EQU |
1345H |
|
|
INICIO: |
IN |
PORT |
01000100 |
44 |
00010011 |
13 |
01000101 |
45 |
|
MOV |
DADO,R0 |
01010010 |
52 |
00000011 |
03 |
00010101 |
15 |
LACO: |
SUB |
Acc,RESTO |
00110011 |
33 |
00000011 |
03 |
00010110 |
16 |
|
DCR |
R0 |
01100001 |
61 |
|
JZERO |
FIM |
01000101 |
45 |
00000011 |
03 |
00010000 |
10 |
|
JUMP |
LACO |
00100111 |
27 |
00000011 |
03 |
00000110 |
06 |
FIM: |
MOV |
Acc,RESTO |
01010000 |
50 |
00000011 |
03 |
00010110 |
16 |
|
HLT |
|
00000000 |
00 |
DOIS: |
DB |
02H |
00000010 |
02 |
DADO: |
DB |
30H |
00110000 |
30 |
RESTO: |
DS |
1 |
X |
X |
|
END |
|
|
|
Obs.: X denota que o conteúdo é irrelevante.
Last modified: Wed Nov 26 22:24:05 BRA 1997
Sugestões para ting@dca.fee.unicamp.br
Voltar para a página do curso.
Ting