14
Lista de Exercícios 1 – Organização e Arquitetura de Computadores 1) Efetuar as seguintes conversões de base: a) (597) 10 = ( ) 2 b) (10011) 2 = ( ) 10 c) (ADC5) 16 = ( ) 2 d) (32FB) 16 = ( ) 10 e) (597) 10 = ( ) 16 f) (10011) 10 = ( ) 16 g) (ADC5) 16 = ( ) 10 h) (32FB) 16 = ( ) 5 i) (678) 10 = ( ) 8 j) (501) 8 = ( ) 5 k) (A002) 12 = ( ) 4 2) Efetuar as seguintes conversões de base: a) (10,57) 10 = ( ) 2 b) (10,1011) 2 = ( ) 10 c) (513,98) 10 = ( ) 16 d) (A,0F) 16 = ( ) 10 3) Escreva os comandos de atribuição para as seguintes fórmulas matemáticas. a) X B A F A 2 4 2 3 2 3 b) Y H X H H H 2 45 3 4 3 2 c) X a b e f c d g h i j ( ) ( ) ( ) ( ) * 4) Uma empresa tem para um determinado funcionário uma ficha contendo o nome, número de horas trabalhadas e o n 0 de dependentes de um funcionário. Considerando que: a) A empresa paga 12 reais por hora e 40 reais por dependentes. b) Sobre o salário são feito descontos de 8,5% para o INSS e 5% para IR. Faça um algoritmo para ler o Nome, número de horas trabalhadas e número de dependentes de um funcionário. Após a leitura, escreva qual o Nome, salário bruto, os valores descontados para cada tipo de imposto e finalmente qual o salário líquido do funcionário. 5) Faça um algoritmo para ler um valor X e um valor n. Após, calcule a seguinte expressão:

Lista de Exercícios e Provas Organização e Arquitetura de Computadores 2010 2011

  • Upload
    uff

  • View
    0

  • Download
    0

Embed Size (px)

Citation preview

Lista de Exercícios 1 – Organização e Arquitetura de Computadores

1) Efetuar as seguintes conversões de base:

a) (597)10 = ( )2

b) (10011)2 = ( )10

c) (ADC5)16 = ( )2

d) (32FB)16 = ( )10

e) (597)10 = ( )16

f) (10011)10 = ( )16

g) (ADC5)16 = ( )10

h) (32FB)16 = ( )5

i) (678)10 = ( )8

j) (501)8 = ( )5

k) (A002)12 = ( )4

2) Efetuar as seguintes conversões de base:

a) (10,57)10 = ( )2

b) (10,1011)2 = ( )10

c) (513,98)10 = ( )16

d) (A,0F)16 = ( )10

3) Escreva os comandos de atribuição para as seguintes fórmulas matemáticas.

a) XB A F

A

2 4 2

3 2

3

b) Y HX

H HH

2

45

34 3

2

c) Xa b e f

c d g h

i

j

( ) ( )

( ) ( )*

4) Uma empresa tem para um determinado funcionário uma ficha contendo o nome, número de horas trabalhadas e o n0 de dependentes de um funcionário.

Considerando que:

a) A empresa paga 12 reais por hora e 40 reais por dependentes.

b) Sobre o salário são feito descontos de 8,5% para o INSS e 5% para IR.

Faça um algoritmo para ler o Nome, número de horas trabalhadas e número de dependentes de um funcionário. Após a leitura, escreva qual o Nome, salário bruto, os valores descontados para cada tipo de imposto e finalmente qual o salário líquido do funcionário.

5) Faça um algoritmo para ler um valor X e um valor n. Após, calcule a seguinte expressão:

Y

X X X X N

N

1

1

2

2

3

3! ! !. . .

!

6) Faça um algoritmo para somar os restos da divisão por 3 de 200 números.

Organização e Arquitetura de Computadores

Na apostila de algoritmos, há mais comandos que podem se usados com vistas à confecção de pseudocodigo: PARA ... ; REPITA... ; ESCOLHA; e Comandos Lógicos. Por favor, consulte a apostila antes de começar a escrever os códigos desta lista.

1) Indique o resultado das seguintes expressões:

a) 2 > 3 b) ( 6 < 8 ) OR ( 3 > 7 ) c) ((( 10 DIV 2 ) MOD 6 ) > 5 ) XOR ( 3 < ( 2 MOD 2 ) ) d) NOT ( 2 < 3 )

2)Faça um programa que leia o número do mês (de 1 até 12) e mostre quantos dias ele tem. 3)Escreva um algoritmo que leia os números abaixo e escreva os 10 primeiros inteiros 0.7; 2; 3; 2.1; 4; 3.45; 21; 1.3; 0.04; 8; 12; 11.2; 61; 14; 90.33; 188; 24.44; 16; 200; 3.14; 77.77

4) Faça um programa que leia um número e mostre se é primo ou não. 5) Leia um número e mostre a raiz cúbica e 5 dele. Use a seguinte relação matemática:

1ln( a )

b ba e . Assuma a existência de uma função “log” ou “ln”, conforme a necessidade

6) Idem, mas substitua a função logaritmo por uma busca em tabela. NOTA: Não é preciso fazer a tabela toda, mas um pedaço.

7) O valor aproximado de PI pode ser calculado usando-se a série

S 1

1

1

3

1

5

1

7

1

93 3 3 3 3...

sendo S 323 fazer um algoritmo para calcular e escrever o valor de PI com 51 termos

8) Calcule 1

21

50

NN

9) Escrever um programa para gerar e escrever uma tabela com os valores de seno de um Angulo A em radianos, utilizando a série de Mac-Laurin Truncada apresentada a seguir:

SenA AA A A

3 5 7

6 120 5040+...

Condições: os valores dos ângulos devem variar de 0.0 a 6.3, inclusive, de 0.1 em 0.1

10) Faça um algoritmo que simule um cronometro com horas, minutos e segundos. A simulação deverá mostrar no vídeo o cronometro no seguinte formato HH: MM: SS. Inicialmente o cronometro

será zerado ( 00: 00: 00 ), sendo que os segundos começarão a ser incrementados, depois os minutos e depois as horas. Lembre-se que a cada 60 segundos os minutos deverão ser incrementados, depois os minutos voltarão a zero. Quando as horas estiverem prestes a chegar em 25, o cronometro deverá voltar a zero ( 00: 00: 00 ).

11) ) Dado uma matriz de ordem NxN faça um algoritmo que verifique se a matriz é simétrica (aij=aji).

12) Dado uma matriz NxM de valores reais faça um algoritmo que faça a leitura destes valores e ao final da leitura de todos, imprimir o seguintes relatório:

a) Qual a Soma dos valores de cada coluna da matriz; b) Listar os valores que são menores que a média dos valores; c) Qual a soma dos elementos da diagonal secundária;

13) Dado uma matriz NxM de valores inteiros faca um algoritmo que leia estes valores e, ao final, coloque os elementos ordenados primeiro pela linha e depois pela coluna. 14) Dado duas matrizes A e B de ordem NxN faca um algoritmo que some as duas e gere a matriz C. 15) Dada uma matriz NxM de valores inteiros determine a sua transposta e imprima-a. 16) Fazer um algoritmo que efetue um produto matricial. Seja A(m x n) e B (n x m) as matrizes fatores, sendo m<=40 e n<=70. Deverão ser impressas as matrizes A, B e a matriz-produto obtida. Sugestões para Escrever o Pseudocódigo 1.Sempre que possível, seja preciso. Os lugares onde o pseudocódigo é impreciso ou ambíguo são tipicamente onde não se tem uma idéia correta sobre o que deve ser feito ou o algoritmoestá errado. 2. Observe com cuidado como seu texto de referência usa o pseudocódigo para expressar algoritmos. Siga o estilo usado por ele e pelo instrutor. O pseudocódigo é um meio de comunicar idéias. 3. Pratique a escrita de pseudocódigo. Após ler sobre um algoritmo, tente escrever o pseudocódigo para o algoritmo. É necessário não somente dominar o pseudocódigo, mas entender o que o algoritmo faz. 4. Ao encontrar um algoritmo novo, reflita sobre o seguinte: (1) Qual é o problema que o algoritmo está tentando resolver? , (2) Como o algoritmo trabalha? , (3) O algoritmo está correto? Por quê? , (4) Qual é o tempo de execução do algoritmo? , e (5) Há algoritmos melhores para resolver o problema?

Lista de Exercícios No _____ 2010

Organização e Arquitetura de Computadores

Profa. Vania V. Estrela

1. De um exemplo de máquina para a classe MISD de Flynn

2. Qual o princípio de funcionamento das arquiteturas SIMD? Comente para as

arquiteturas SIMD o parâmetro "granularidade" dos processadores

3. Analise uma máquina vetorial com relação à classificação de Flynn. Utilize a figura

apresentada em aula e mostre os elementos de uma arquitetura vetorial

4. Quais são as características do paralelismo em uma máquina SIMD e MIMD?

5. Quais são as duas possibilidades para se construir máquinas com vários

processadores? Que nome é dado a cada uma delas?

6. Qual o efeito prático de ter um espaço de endereçamento único? E um espaço de

endereçamento distinto?

7. Discuta a classificação de máquinas paralelas segundo a memória

(compartilhamento/distribuição).

8. Qual a principal diferença entre memórias centralizadas e memórias distribuídas? O

que caracteriza esta classificação?

9. Discuta a afirmação: - “A programação paralela com memória de endereçamento

compartilhado é mais simples que a programação com endereçamento distribuído”.

10. Compare o desempenho de multicomputadores com multiprocessadores.

11. Quais as vantagens das máquinas do tipo systolic array (arranjo sistólico)?

12. Cite dois tipos de cálculos onde é recomendavel usar máquinas do tipo

systolic array (arranjo sistólico).

13. Discuta a afirmação: “O desempenho de uma máquina paralela aumenta linear-

mente com o número de processadores.”.

14. Qual classe de máquinas possui uma memória distribuída e compartilhada?

15. Discuta a afirmação: - “Uma máquina SIMD tem maior desempenho que uma

máquina MIMD quando a granularidade é baixa”. Diga se verdadeira ou não

e quando?

16. Qual o efeito de trabalhar em máquinas SIMD, se comparados com máquinasuniprocessadas?

17. Desenhe um esquema básico de arquiteturas SIMD e MIMD por troca demensagens. Onde esta a diferença significativa entre eles?

18. Como uma máquina MIMD, que se utiliza de um barramento comum para ligar os

processadores à memória poderia ter sua performance aumentada?

19. Qual a grande vantagem de uma máquina MIMD que trabalha por troca demensagens frente a uma máquina MIMD que usa barramento compartilhado?

20. Quais são as características das arquiteturas UMA (acesso uniforme à memória) e

NUMA (acesso não uniforme à memória), quanto: (a) número de processadores, (b)

rede de interconexão, (c) tempo de acesso à memória? Faça um esquema em blocos

das arquiteturas UMA e NUMA.

21. (ENADE 2008 - adaptado) Uma alternativa para o aumento de desempenho é o uso de

processadores com múltiplos núcleos (multicores). Nesses sistemas, cada núcleo,

normalmente, tem funcionalidades completas de um processador. Atualmente é

comum configurações com 4 ou mais núcleos. Com relação ao uso de multicores, e

sabendo que threads são estruturas de execução associadas a um processo, que com-

partilham áreas de código e dados, mantendo contextos independentes, analise as

seguintes asserções:

Tendo suas atividades divididas em múltiplos threads que podem ser executadas

paralelamente, aplicações podem se beneficiar mais efetivamente dos diversos núcleos dos

processadores multicores

Porque o SO que executa em processadores multicores pode alocar os núcleos existentes

para executar simultaneamente diversas sequências de código, sobrepondo suas execuções

e, normalmente, reduzindo o tempo de resposta das aplicações às quais estão associadas.

Acerca dessas asserções, assinale a opção correta:

I. As duas asserções são proposições verdadeiras, sendo a segunda uma

justificativa correta da primeira

II. As duas asserções são proposições verdadeiras, mas a segunda não é uma

justificativa correta da primeira.

III. A primeira asserção é uma proposição verdadeira, e a segunda, uma

proposição falsa.

IV. A primeira asserção é uma proposição falsa, e a segunda, uma proposição

verdadeira.

V. Tanto a primeira quanto a segunda asserções são proposições falsas.

22. (ENADE 2008 - adaptado) Uma alternativa para o aumento de desempenho é o uso de

processadores com múltiplos núcleos (multicores). Nesses sistemas, cada núcleo,

normalmente, tem funcionalidades completas de um processador. Atualmente é

comum configurações com 4 ou mais núcleos. Com relação ao uso de multicores, e

sabendo que threads são estruturas de execução associadas a um processo, que

compartilham áreas de código e dados, mantendo contextos independentes, analise as

seguintes asserções:

Tendo suas atividades divididas em múltiplos threads que podem ser executadas

paralelamente, aplicações podem se beneficiar mais efetivamente dos diversos núcleos

dos processadores multicores, porque o SO que executa em processadores multicores

pode alocar os núcleos existentes para executar simultaneamente diversas sequências

de código, sobrepondo suas execuções e, normalmente, reduzindo o tempo de resposta

das aplicações às quais estão associadas.

Acerca dessas asserções, assinale a opção correta:

I. As duas asserções são proposições verdadeiras, sendo a segunda uma

justificativa correta da primeira.

II. As duas asserções são proposições verdadeiras, mas a segunda não é

uma justificativa correta da primeira.

III. A primeira asserção é uma proposição verdadeira, e a segunda, uma

proposição falsa.

IV. A primeira asserção é uma proposição falsa, e a segunda, uma

proposição verdadeira.

V. Tanto a primeira quanto a segunda asserções são proposições falsas.

23. (POSCOMP 2011, Questão 29) Relacione a coluna da esquerda com a coluna da direita.

(I) Multicore (A) Múltiplos pipelines que operam em paralelo

(II) Superpipeline (B) Execução de instruções fora de ordem em um pipeline

(III) Superescalar (C) Pipelines com grande número de estágios

(IV) Pipeline dinâmico (D) Múltiplos processadores compartilhando um espaço de endereços

(V) Multiprocessadores (E) Múltiplos processadores em um único encapsulamento

Assinale a alternativa que contém a associação correta:

a) I-B, II-A, III-C, IV-E, V-D b) I-C, II-A, III-B, IV-D, V-E

c) I-D, II-E, III-B, IV-A, V-C d) I-E, II-C, III-A, IV-B; V-D e) I-E, II-C, III-A, IV-D, V-B

24. (POSCOMP 2011, Questão 29) Relacione a coluna da esquerda com a coluna da direita

(I) Multicore (A) Múltiplos pipelines que operam em paralelo

(II) Superpipeline (B) Execução de instruções fora de ordem em um pipeline

(III) Superescalar (C) Pipelines com grande número de estágios

(IV) Pipeline dinâmico (D) Múltiplos processadores compartilhando um espaço de endereços

(V) Multiprocessadores (E) Múltiplos processadores em um único encapsulamento

Assinale a alternativa que contém a associação correta

a) I-B, II-A, III-C, IV-E, V-D

b) I-C, II-A, III-B, IV-D, V-E

c) I-D, II-E, III-B, IV-A, V-C

d) I-E, II-C, III-A, IV-B, V-D

e) I-E, II-C, III-A, IV-D, V-B

25. (POSCOMP 2011, Questão 41) O gerenciamento de processos em sistemas modernos é

feito, quase sempre, com o uso de preempção de processos através de técnicas de

compartilhamento de tempo. O que a introdução de processadores com vários núcleos altera

nesse gerenciamento?

a) Torna-se possível a paralelização efetiva de processos concorrentes.

b) Torna-se possível eliminar a condição de corrida em processos concorrentes

executados em paralelo

c) Torna-se possível o uso de threads para a execução de processos

concorrentes

d) Torna-se possível separar os demais mecanismos de gerenciamento do

sistema operacional do gerenciamento de processos

e) Torna-se possível o uso de sistemas operacionais multitarefas

26. (POSCOMP 2012, Questão 46) Com relação a processadores, considere as afirmativas a

seguir

I. Arquiteturas Superescalares podem executar instruções concorrentemente em

pipelines diferentes

II. O superpipeline permite a execução de duas tarefas em um único ciclo de clock do

processador

III. Multiprocessadores simétricos compartilham a utilização da memória principal

IV. A utilização de uma memória cache L2 compartilhada em processadores multicore

é vantajosa em threads que possuem alta localidade

Assinale a alternativa correta

a) Somente as afirmativas I e II são corretas

b) Somente as afirmativas I e IV são corretas

c) Somente as afirmativas III e IV são corretas

d ) Somente as afirmativas I, II e III são corretas

e) Somente as afirmativas II, III e IV são corretas

Lista de Exercícios sobre 8086/8088

Para os exercícios de 1 a 18 abaixo, o primeiro número está em A10H e o segundo em A14H e o resultado deve ser colocado em A20H 1)Somar 2 números de 8 bits.

2)Somar 2 números de 16 bits

3)Somar 2 números de 32 bits

4)Subtrair 2 números de 8 bits.

5)Subtrair 2 números de 16 bits

6)Subtrair 2 números de 32 bits

7)Multiplicar 2 números de 8 bits sem sinal

8)Multiplicar 2 números de 16 bits sem sinal

9)Somar 2 números de 8 bits em BCD

10)Somar 2 números de 16 bits em BCD

11)Subtrair 2 números de 8 bits em BCD

12)Subtrair 2 números de 16 bits em BCD

13)Somar 2 números de 8 bits em ASCII

14)Somar 2 números de 16 bits em ASCII

15)Subtrair 2 números de 8 bits em ASCII

16)Subtrair 2 números de 16 bits em ASCII

17)Multiplicar 2 números de 8 bits com sinal

18)Multiplicar 2 números de 16 bits com sinal 19)Faça um programa que: 1)Some os numeros de 8bits de 10H a 1FH e coloque o resultado em 50H 2)Some os numeros de 16bits de 10H a 1EH e coloque o resultado em 50H 3)Calcule a media dos numeros de 8bits de 10H a 30H e coloque o resultado em 50H

4)Calcule a media dos numeros de 16bits de 10H a 2FH e coloque o resultado em 50H 5)Fazer um programa que verifique o numero da posição de memoria 10H (16bits) e coloque -1 na posição 12H se o numero for negativo, 1 se ele for positivo ou zero se ele for zero. 20)Fazer um programa que:

1) Leia os valores de 8 bits de 10H a 1FH e copie os pares para um vetor iniciado em 20H e impares para 30H 2) Move 20 bytes de 100H para 200H 3) Move 50H bytes de 200H para 100H 4) Move 500H bytes de 200H para 100H 5) Move 500H bytes de 100H para 200H 6) Move N bytes da posição x para a y. N está em 10H, x em 12H e y em 14H.

21)Fazer um programa que procure o caracter "." começando em 24H com: a) tamanho de 10 caracters b) Sem tamanho c) Tamanho determinado pelo /0 22) Fazer um programa que some dois numeros de 10 digitos em ASCII. O primeiro começa em 10H e o segundo em 20H. O resultado deve ser colocado a partir de 30H 23)Fazer um programa que multiplique dois numeros de 10 digitos em ASCII. O primeiro começa em 10H e o segundo em 20H. O resultado deve ser colocado a partir de 30H. 24) Traduza as funções abaixo para assembly do 8086/8088, usando as convenções "normais" para passagem de parametros e resultados, alinhamento, etc. Quando necessário, assuma as declarações abaixo( não é necessário traduzi-las para assembly). NOTA: Estes programas servem apenas como exercícios. struct X{ int a,b,c int arr[20] },X; int a 1) void f (int i){ a+=i; //a é global } 2) void f (void){ int i; for(i=0;i<20;i++) x.arr[i]=0; //x é global } 3) int f (int n){ if (n==0) return 1; else return n* f (n-1); }

4) int f (struct X*x, int i){ return x->arr[i]; } 5) int f (struct X*x, int i){ return &x->arr[i]; } 6) void f (struct X*x, int i){ int j; j=x->arr[i+x->c]; if(j==0)a=i; //a é global else a=j; } 25)Explique quantas iterações ocorrem em cada um dos seguintes loops: a) mov cx,1 E5: loop E5 b) mov cx,0 E5: loop E5 c) E5: mov cx,10 loop E5 d) mov cx,10 E5: inc cx loop E5 26) Escreva um programa que copie uma string de 10H para 20H e converta as minúsculas em maiúsculas. 27) Escreva um programa que verifique se um numero inteiro na posição 10H é primo. O resultado deverá ser guardado na posição de memoria 20H 28)Escreva um programa guarde em variaveis o menor e o maior valor de um vetor na posição 30H.

Projetos (Prova 1)

Qualquer sistema de geração de código executável envolve as fazes descritas abaixo. No passado, as funçõesde ligador (linker) e carregador (loader) eram separadas.

Regras de apresentação: Documentação técnica (.doc) do projeto Código comentado em CD Cópia eletrônica e em papel Apresentação em PowerPoint (15 minutos), seguida de arguição

1) Montador para o HIPO 2) Disassembler (desmontador) Grupo de 6: Érica Guimarães, Beatriz Alencar, Tiago Quintanilha, Thiago Rezende, Renan Rocha, Jonny Andrade

3) Ligador/Carregador para HIPO Grupo de 4: Marcelo de Souza, Guilherme Cajueiro, Vinicius Jardim, Pompílio Reis

4) Debugger para o HIPO. A Figura abaixo mostra a tela de um debugger para 8086:

5) Compilador Pseudo-código -> HIPO Estruturas if e switch Alocação e definição de variáveis, incluindo vetores e matrizes(int e float)Loop while e for (simples) Operações lógicas/aritméticas com inteiros Operações em ponto flutuante Loop do… while Operações com matrizes: definição, alocação, concatenação, leitura e escrita

Grupo de 6: Ana Carolina Ferreira, Ana Carolina Pedreira, Fabio Portela, Fabiano Rego, Ana Paula Luz, ThiagoSampaio

6) Minicompilador "C" -> HIPO Estruturas if e switch Alocação e definição de variáveis, incluindo vetores e matrizes(int e float)Loop while e for (simples) Operações lógicas/aritméticas com inteiros Operações em ponto flutuante Loop do… while Operações com matrizes: definição, alocação, concatenação, leitura e escrita

Grupo de 6: Mariana, Bornia, Vanessa, Vinicius Lyra, Taiane, Thiago Macedo

6) Projeto da arquitetura interna do HIPO (registradores, barramentos, controle, etc.). Ênfase nos blocos de I/O esinais de controle. Diagramas e manual detalhados. Grupo de 3:

7) Criação de estrutura para subrotinas no HIPO (novas instruções precisam ser criadas: CALL, RETURN,PUSH, POP; descrever estrutura de pilha e ). Grupo de 3

8) Desenvolvimento de uma interface serial e outra paralela para HIPO. Hardware e software. Definir o protocolode comunicação.