EA869:2011 1S:Exercícios extras

De DCA-Wiki

Exercícios extras

1. Considere as máquinas a diferenças e as equações do 1º (f(x)=ax+b) e 2º (f(x)=ax2+bx+c) graus. Mostre do quê as 1as e 2as diferenças dependem para cada uma das equações.


2. Projete um contador binário módulo 3 síncrono usando flip-flops tipo D. O contador possui uma entrada de controle x. Quando x = 0, o contador permanece no estado atual, quando x = 1 o contador incrementa o valor da saída.


3. Dê sua interpretação da Lei de Moore. Pode ser provada? Continuará valendo? Quais são os obstáculos?


4. O conceito de “programa armazenado” foi introduzido por von Neumann (e outros). Qual a importância/utilidade do mesmo atualmente?


5. (a) Quais são os problemas apropriados para serem tratados pela máquina computador (dê uma resposta sucinta)?

(b) Explique sua resposta em (a) usando os termos: problemas, procedimentos, algoritmos, computáveis, não-computáveis, complexidade, tratável, não-tratável, problemas P, NP e NPC.


6. Explique como deve ser feita a inserção e a retirada de uma informação nas estruturas vetor e fila, tendo o cuidado com os casos de estrutura cheia e vazia.


7. Utilizando o diagrama da HIERARQUIA SOFTWARE/HARDWARE :

(a) dê exemplos de máquinas virtuais nos diferentes níveis;

(b) posicione linguagem de máquina, linguagem simbólica, linguagem de alto nível e linguagem voltada à aplicação.


8. Considere a representação em ponto flutuante normalizada com 1 bit para sinal, 6 bits para mantissa e 4 bits para expoente (em complemento de 2 e base 2). Dê a representação dos números +3,48 e +4,53 e apresente o resultado da soma dos mesmos em ponto flutuante. Qual o valor em decimal ? Mostre seu raciocínio e comente a questão da precisão.


9. Mostre o esquema de um flip-flop sensível à borda (subida ou descida).


10. O que são “latches” ?


11. Modifique o controlador simples (Fig. 2.13, transp. 170) para que execute Acc ← (R2) – (R1).


12. Mostre o esquema de um dispositivo de partida (que forneça S) para o controlador simples (Fig. 2.13, transp. 170).


13. Considerando o esquema da Fig. 2.11 (transp. 166), explique:

(a) em quantos pulsos se dá a leitura de um registrador e

(b) como se faz esta leitura (mostre os microcomandos e micro-operações necessárias).


14.(a) Escreva um microprograma que execute a seguinte instrução:

   MULTIPLY end                      Acc ← (Acc)*(end)

onde os números a serem multiplicados são inteiros e positivos.

(b) Escreva um programa que utilize esta instrução e verifique no simulador se está correta.


15.(a) Escreva um microprograma que execute a seguinte instrução:

   DIVIDE end                        Acc ← (Acc)/(end)

onde os números a serem divididos são inteiros e positivos.

(b) Escreva um programa que utilize esta instrução e verifique no simulador se está correta.


16. No simulador, utilizando a instrução JUMP é possível escrever um programa que comece em uma posição diferente da posição 0 da memória RAM. Utilizando esta instrução escreva e execute um programa que comece na posição 5 da memória RAM.


17. Simule o seguinte programa:

  LOAD         3000
  ADD          3001
  STORE        3002
  STOP

(a) Nas posições de memória utilizadas pelo programa grave o conteúdo que achar conveniente.

(b) Quantas microinstruções são executadas?

(c) Quais microoperações são executadas e quais sinais de controle são gerados?


18. Simule o programa abaixo e responda às questões a seguir.

  RAM           conteúdo
  0             LOAD      $3000
  1             JUMPZERO  $4
  2
  3
  4             STOP
  ...
  3000          0

(a) Quantas microinstruções são executadas?

(b) Quais microoperações são executadas e quais sinais de controle são gerados?

(c) Simule e descreva o que acontece se o conteúdo da posição 3000 for diferente de zero.


19. Simule o programa abaixo e responda às questões a seguir.

  RAM           conteúdo
  0             LOAD          $3000
  1             SUBTRACT      $3001
  2             JUMPZERO      $4
  3             STOP
  4             STORE         $3002
  5             STOP
  ...
  3000          -4
  3001          -3

(a) Quantas microinstruções são executadas?

(b) Quais microoperações são executadas e quais sinais de controle são gerados?

(c) Simule e descreva o que acontece com diversos conteúdos das posições 3000 e 3001.


20. (aula de 19/04/10) Considere que seu RA é representado por “abcdef” e que os seis dígitos de “a” a “f” estão armazenados separadamente a partir da posição de memória dada por “2def”. Escreva um programa (mostrando sua notação binária ou hexadecimal) que calcule a soma dos seis dígitos do RA e guarde o resultado na posição “2def + 6”, considerando a máquina microprogramada descrita no Cap. 3. Verifique se seu programa está correto simulando-o com o simulador disponibilizado na página da disciplina e vendo se cada operação está sendo executada como você previu. Faças as correções necessárias no programa até que o simulador o execute de forma correta e documente esta execução para entrega na aula de 26/04/10.


21. Simule o programa abaixo:

  RAM             conteúdo
  0               LOAD              3000h
  1               ADD               3001
  2               JUMPNEG           6
  3               SUBTRACT          3002h
  4               STORE             3003h
  5               STOP
  6               ADD               3004h
  7               STORE             3005h
  8               STOP
  ...
  3000            a
  3001            b
  3002            c
  3003            d

(a) Atribua diferentes valores às constantes a, b, c, d de modo a que a instrução JUMPNEG gere ou não desvio. Simule todos os casos.

(b) Para um dos casos responda: quantas instruções são executadas e mostre as microoperações e sinais de controle.


22. Utilizando o processador microprogramado dado em aula (Cap. 3), mostre as microinstruções do interpretador para realizar as seguintes instruções de máquina:

a. instrução:

INC end                end. ← (end.) + 1

b. instrução:

LOOP                   do while (Acc) ≥ 0
                         R2 ← (R2) + (R1)
                         Acc ← (Acc) - 1
                       end do

com os registradores Acc e R1 já carregados e o registrador R2 já zerado.

c. Para a instrução

JUMP_R1R2 m ;desvio para endereço m se R1=R2

mostre as fases de busca, mapeamento e execução, considerando: C.O.= 0100 ; 12 bits para expressar “end“; microprograma para busca iniciando na posição zero e para executar a instrução na posição 17 (hexa) da micromemória.


23. Considere um programa com o trecho abaixo onde a cada linha está indicado o tipo de endereçamento do operando fonte (o destino é sempre modo reg. direto). Para cada instrução defina o valor do EE (endereço efetivo) do operando fonte (é sempre o primeiro) e o resultado final da execução da instrução. Os valores iniciais (em hexadecimal) são:

R1= 11H 
P = 2AH
SP = 501H
End. de aux = 4000H
Cont. deaux = 3BH
PC= 1003H
Rx = 50H
Rb = 60H

Use (A) para indicar conteúdo de A, para valores não definidos. (C) para concatenação.

Instrução EE-fonte Resultado final no operando destino
MOVE R1, R2 ; reg. direto
MOVE (aux), R2; abs. Indireto
MOVE -3(PC), R2 ; relativo
MOVE P(5), R2 ; paginado por reg.página


24. Mostre o novo texto resultante do processamento do programa abaixo por um processador de macro e forneça o resultado final da execução, considerando que R1=R2=R3=0 antes da execução.

                ORG     5000h ; pseudo instrução que define endereço da próxima instrução como
                              ; 5000 em hexadecimal
MACRO           SOMA A1, A2, A3, A4
                ADD A1, A4
                AIF (A2 = “ “) .X1
                ADD A2, A4
.X1             AIF (A3 = “ “) .X2
                ADD A3, A4
.X2             ENDMACRO
INI:            MOVE #3, R2
                SOMA R2, ,R3, RESU
                MULT RESU, RESU
                MOVE RESU, FIM
                STOP
FIM:            DS      2       ; pseudo instrução que reserva 2 palavras sem valor definido
RESU:           DW      5       ; pseudo instrução que define a constante 5 no endereço RESU
                END             ; pseudo instrução que define o fim do programa para o montador


25. Seja uma arquitetura com 3 linhas de interrupção: L1, L2 e L3. O programa principal, PP, está armazenado a partir da posição 400H da memória e as rotinas de serviço (ROT1, ROT2 e ROT3) associadas às linhas estão armazenadas a partir das posições de memória 600H, 800H e 900H, respectivamente. A máscara de interrupção está nos três bits menos significativos do PSW (X X X X X L3 L2 L1). O vetor de interrupção ocupa posições contíguas da memória, a partir da posição 20H da memória, e valem as seguintes regras:

i) PP só pode ser interrompido por sinal de interrupção em L1 ou L3;
ii) ROT1 só pode ser interrompida por sinal de interrupção em L2;
iii) ROT2 só pode ser interrompida por sinal de interrupção em L3;
iv) ROT3 pode ser interrompida por sinal de interrupção em L1 ou L2, mas não por sinal de interrupção na própria linha L3.

(a) Mostre os valores das máscaras de interrupção para PP, ROT1, ROT2 e ROT3:

        mask :                              mask1:
        mask2:                              mask3:

(b) Mostre o mapa de memória (vetor de interrupção, PP, ROT1, ROT2 e ROT3) para o caso em que a arquitetura implementa o mecanismo de interrupção com PSW no vetor de interrupção.

(c) Mostre o mapa de memória (vetor de interrupção, PP, ROT1, ROT2 e ROT3) para o caso em que a arquitetura implementa o mecanismo de interrupção sem PSW no vetor de interrupção.

(d) Considerando a situação (b) acima, mostre as etapas do esquema de interrupção desde a execução de PP com a ocorrência de um sinal de interrupção em L1 até o retorno a PP.

(e) Considerando a situação (c) acima, mostre as etapas do esquema de interrupção desde a execução de PP com a ocorrência de sinais de interrupção em L2 e L3 seguidos até o retorno a PP.

(f) Considerando a situação (c) acima, mostre as etapas do esquema de interrupção desde a execução de PP com a ocorrência de sinais de interrupção em L3, L3 e L1 seguidos até o retorno a PP.


26. Explicar como funcionam os registradores de uma interface de E/S – Registrador de Estado, Registrador de Dados e Registrador de Controle – em uma operação de:

(a) entrada de dados;

(b) saída de dados.


27. Explicar as diferenças entre E/S Isolada e E/S mapeada em memória com relação a:

(a) barramentos de E/S e barramentos de memória;

(b) espaço de endereços;

(c) instruções de E/S;

(d) quantidade de endereços de E/S;

(e) tempo de execução de instruções de E/S.


28. Sobre a definição de uma interface de entrada/saída.

(a) Defina a função dos registradores comumente encontrados em interfaces de E/S e mostre um esquema de como deveria ser uma interface serial que faça tanto entrada como saída.

(b) Defina bits nos registradores de estado e de controle que sejam relevantes para o funcionamento da interface.

(c) A questão da interface comunicar-se sincronamente ou assincronamente afeta qual comunicação da interface ?

(d) Faça uma rotina de exemplo para entrada condicional, supondo que a arquitetura seja E/S isolada.

(e) Na questão (d), qual seria a diferença se a arquitetura for E/S mapeada em memória?


29. Quais são as diferenças entre a transferência serial assíncrona e a transferência serial síncrona?


30. Explicar, para uma arquitetura isolada de E/S, o papel dos registradores de uma interface de E/S – Registrador de Estado (RS), Registrador de Dados (RD) e Registrador de Controle (RC) – em uma operação (transferência condicional) de:

(a) entrada de dados;

(b) saída de dados.

(c) Explicar o que são start bits, stop bits, caracter de sincronismo, como são usados e para quais tipos de transferência serial?


31. Considere uma interface serial para entrada de dados chamada ENTRADA.

(a) Inicialmente defina todos os seus registradores de forma a que ela possa operar de forma síncrona ou assíncrona, com 1 ou 2 StopBits (sempre 1 StartBit), ASCII de 7 ou 8 bits, 4 baud-rates diferentes (A, B, C, D), funcionamento por interrupção (ou não).

(b) Descreva sucintamente como esta interface opera (seu relacionamento com a CPU e seu relacionamento com o dispositivo). Lembre-se que o usuário poderá desejar operar condicionalmente, incondicionalmente ou por interrupção.

(c) programe a sua interface para realizar entrada em modo condicional, baud-rate B, 2 Stop-bits, ASCII de 8 bits. Escreva o programa para controle da entrada de dados, considerando que a CPU oferece uma arquitetura de E/S mapeada em memória e é uma máquina de 2 endereços.


32. Explique o funcionamento do esquema de “handshaking” da interface 68230.


33. Explique o funcionamento de uma interface serial.


34. Explique os termos: simplex, halfduplex, fullduplex, síncrona, assíncrona.


35. Fazer a montagem do programa listado abaixo, considerando que a palavra do processador tem 8 bits. A Tabela de Instruções de Máquina (TIM) e a Tabela de Pseudo-Instruções (TPI) são dadas abaixo. (a) Mostre como fica a Tabela de Símbolos. (b) Mostre o Código Objeto gerado indicando todos os endereços e seus conteúdos em hexadecimal. (c) Quantos bytes ocupa o código objeto gerado?

PROGM:     EQU     1200H
ZERO:      EQU     0000H
SIZE:      EQU     0008H
ORG        PROGM
START:     MVI     SIZE, R2
           MVI     DATA, R0
           MVI     ZERO, R4
LOOP:      MOVE    INPUT, (R0)+
           ADD     INPUT, R4
           DCR     R2
           JNZ     LOOP
           MOVE    R4, SUM
           HLT
           END     START
DATA:      EQU     0060H
           ORG     DATA
OUTPUT:    DS      SIZE
INPUT:     DW      00A0H
SUM:       DS      05H
TIM - Tabela de Instruções de Máquina TPI - Tabela de Pseudo-instruções}
Mnemônico Código de Operação Comprimento (bytes)
MVI R030H2
MVI R2 32H 2
MVI R4 34H 2
MOVE R0+ 40H 3
ADD R4 54H 3
DCR R2 22H 1
JNZ 80H 3
MOVE R4 74H 3
HLT 99H 1
Mnemônico Comprimento (bytes)
ORG -
EQU -
DS n
DW 2
END -
ADR 2
GLOB -


36. Explique uma vantagem e uma desvantagem de cada um dos esquemas de carregamento a seguir:

(a) com montagem e carregamento combinados,

(b) de carregamento absoluto e

(c) de carregamento com ajuste de referências.


37. Quais as tarefas de um carregador absoluto e de um carregador de ligação direta?


38. O que são programas ligadores?


39. Quais são as diferenças entre os esquemas de carregamento/ligação dinâmicos com resolução em tempo de carregamento e com resolução em tempo de execução?


40. Um montador para carregamento de ligação direta aplicado a dois arquivos em linguagem simbólica do processador Motorola 68K gerou os seguintes módulos objetos:

Módulo 1 Módulo 2
0. ´MAIN´.´SD´.0000.001E 0,´CALC´.´SD´.0000.000C
0.´OUTPUT´.´LD´.001C.0002 1.0000.02.4410
1.0000.06.21AC00000018 1.0002.02.4316
1.0006.06.4EBA00000000 1.0004.06.4AB000000000
1.000C.06.440C0000001C 1.000A.02.4E75
1.0012.04.20310016 2.0006.04.´OUTPUT´
1.0016.02.4E75 3.
1.0018.04.00000020
1.001C.02.0000
2.0002.04.´MAIN´
2.0008.04.´CALC´
2.000E.04.´MAIN´
3.02.0000

passados como argumentos na ordem: Módulo 2 seguido de Módulo 1 – para um carregador de ligação direta. O endereço inicial de carga (IPLA) foi definido como $0500.

Codificação usada no arquivo gerado pelo montador:

  • tipo=0 (ESD): tipo.simbolo.SD ou LD.end-relativo.compr-bytes
  • tipo=1 (TXT): tipo.end-relativo.compr-bytes.código-binário
  • tipo=2 (RLD): tipo.pos-relativa.compr-bytes.simbolo
  • tipo=3 (END): tipo.end-execução

(a)Qual o conteúdo da Tabela de Símbolos Externos Globais (GEST) gerada pelo carregador?

(b)O diagrama abaixo é um mapa de conteúdo da memória após o carregamento sem os ajustes de ligação e relocação. Indique neste mapa quais posições são ajustadas pelo carregador e qual o novo conteúdo destas posições.

	 0	 2	 4	 6	 8	 A	 C	 E
	----	----	----	----	----	----	----	----
050-	4410	4316	4AB0	0000	0000	4E75	21AC	0000
051-	0018	4EBA	0000	0000	440C	0000	001C	2031
052-	0016	4E75	0000	0020	0000

(c)Qual é o tamanho do código objeto em bytes e qual o endereço de início de execução após o carregamento do item b?

Ferramentas pessoais