• Nenhum resultado encontrado

Curso FFI Microprocessadores I

N/A
N/A
Protected

Academic year: 2021

Share "Curso FFI Microprocessadores I"

Copied!
15
0
0

Texto

(1)

Curso FFI0396 - Microprocessadores I

(2)

Lista 1 (10/08/2010)

1. Calcule as seguintes convers˜oes: • 94310 em base 2, 8 e 16,110011112 em base 8, 10 e 16,76428 em base 2 e 10,

D57A416 em base 2 e 10.

2. Complete a tabela

octal hexadecimal decimal

774 . . . . 775 . . . . . . . . . . . . . . . . . . . . . . . . . . . . 3. Calcule • 11 + (+8)9 + (-6)14 - (+7)

(3)

5. Escreva a sua data de nascimento (dia/mˆes/ano) usando n´umeros hexadecimais e octais.

6. Quantos bytes s˜ao necess´arios para representar, em c´odigo BCD, o valor decimal 664219?

7. Escreva o seu primeiro nome usando o c´odigo ASCII. Para cada byte fixe o bit mais significativo usando o c´odigo de paridade com paridade par.

Lista 2 (17/08/2010)

1. Desenhe o circuito correspondente `a fun¸c˜ao

X = f (A, B) = ¯AB+ AB + A ¯B .

2. Construa portas NOT, AND, OR e XOR usando somente portas NOR. 3. O que faz o circuito abaixo?

B0 A0 A1 B1 B2 B3 A2 A3

(4)

4. Use um multiplexador com 3 bits para sele¸c˜ao de dados e 8 canais de 1 bit na entrada para implementar a fun¸c˜ao maioria

X = f (A, B, C) = AB ¯C+ A ¯BC+ ¯ABC + ABC .

5. Considere um indicador com 7 segmentos: ele tem 7 pinos (1 para cada seg-mento) e um segmento se ilumina quando vocˆe aplica um sinal 1 no pino corres-pondente (veja a figura abaixo). Sendo que os n´umeros s˜ao representados no c´odigo BCD vocˆe vai precisar de um decodificador BCD → 7 segmentos. Como vocˆe projetaria esse decodificador?

g

a

d

e

f

c

b

C

A

B

D

b a c e f g d

6. O que faz o circuito representado na p´agina seguinte? (A figura ´e retirada do livro Structured Computer Organization do A.S. Tanenbaum.)

(5)
(6)

Lista 3 (26/08/2010)

1. No m´odulo SDM 9431 o teclado ´e selecionado usando o endere¸co (de 16 bits) 111010xxxxxxxxxx

(decodifica¸c˜ao parcial de endere¸co). Verifique que esses endere¸cos correspondem aos endere¸cos (em hexadecimal) E800 at´e EBF F .

Analogamente, o display de cristal l´ıquido, o conversor digital-anal´ogico e o con-versor an´alogo-digital s˜ao selecionados usando, respectivamente, os endere¸cos

111011xxxxxxxxxx 111001xxxxxxxxxx 111000xxxxxxxxxx.

Verifique que esses endere¸cos correspondem aos endere¸cos EC00 at´e EF F F , E400 at´e E7F F e E000 at´e E3F F (respectivamente).

Considerando os endere¸cos usados para os quatros perif´ericos, sobrou algum endere¸co no intervalo E000 at´e EF F F ?

2. Vocˆe tem 4 mem´orias de 1024 × 8 bits e quer criar uma mem´oria de 4096 × 8 bits. De quantos bits de endere¸co vocˆe vai precisar? Como v˜ao ser organizadas as linhas de endere¸co?

3. Construa a tabela verdade (entradas a e b, sa´ıdas S1 e S2) do circuito abaixo e fa¸ca um esquema de montagem usando um chip 7400.

(7)

O chip 7400, mostrado na figura abaixo, ´e composto por quatro portas NAND.

4. O que faz o circuito representado na p´agina seguinte? (A figura ´e retirada do livro Structured Computer Organization do A.S. Tanenbaum.)

(8)
(9)

Lista 4 (6/10/2010)

1. Proponha (e desenhe) um circuito para montagem na aula pr´atica de circuitos l´ogicos e construa a sua tabela verdade.

Lista 5 (26/10/2010)

1. − Inicialize(A) ← #63d(B) ← #11d .Copie (B) ← (A).Guarde((50(B))) ← (A)(B) ← #15d((50(A))) ← (B) .

Escreva o c´odigo come¸cando no endere¸co 5000.N˜ao use n´umeros decimais.

Tente reduzir o n´umero de linhas do c´odigo.

• Modifique o c´odigo acima fazendo a troca (A) ↔ (B) em vez de (B) ← (A). − Por que o problema formulado desta maneira vai dar um c´odigo errado?

(10)

O objetivo dessa prova ´e desvendar a frase criptografada v k p g kˆB ˆS ˆR

ou, em hexadecimal,

76 6B 70 67 6B 02 13 12 . (a) Usando o algoritmo recursivo

yi+1= (a yi) mod 2 8

,

com a = 71d e y0 = 31d, crie uma lista de 256 n´umeros. Lembre que

mod 28

fornece o resto da divis˜ao de um n´umero por 28

.

(b) Agora escreva um c´odigo para o gerador de n´umeros aleat´orios de 8 bits xn= SWAP(xn−p∀xn−q) ,

com p = 250d e q = 103d. Aqui ∀ indica a opera¸c˜ao de OR-exclusivo (ou XOR) e a opera¸c˜ao SWAP troca o nibble menos significativo com o nibble mais significativo. Observe que para calcular o valor de xn vocˆe precisa

ter guardado pelo menos os ´ultimos 250 n´umeros gerados. No nosso caso vamos guardar os ´ultimos 256 valores de xn.

Use um vetor de 256 componentes para guardar a lista dos ´ultimos 256 valores de xn (considere este espa¸co de mem´oria como um buffer

limitado e peri´odico). Use o algoritmo recursivo do exerc´ıcio (a) acima para inicializar essa lista de 256 n´umeros.

Considere como valor x0 o n´umero guardado na ´ultima componente

do vetor. Assim, na primeira itera¸c˜ao, xn−p ser´a o n´umero guardado

(11)

Lista 7 (16/11/2010)

1. Escreva um c´odigo para fazer a soma 13751+23987+17831 (n´umeros decimais). − Transforme os n´umeros decimais em n´umeros hexadecimais.

Use os registros R0–R5 do banco de registros #0 para armazenar os trˆes n´umeros (observe que os n´umeros s˜ao em precis˜ao dupla e precisamos de dois bytes para armazenar cada n´umero).

No final do c´odigo a soma deve ser armazenada no acumulador e no registro B, usando o acumulador para guardar o byte mais alto.

Lista 7bis (16/11/2010)

1. Escreva um c´odigo para fazer o produto 13751 × 23987 (n´umeros decimais). − Transforme os n´umeros decimais em n´umeros hexadecimais.

Use os registros R0–R3 do banco de registros #0 para armazenar os dois n´umeros (observe que os n´umeros s˜ao em precis˜ao dupla e precisamos de dois bytes para armazenar cada n´umero).

Para calcular o produto escreva os dois n´umeros como N 1 = (H1, L1) e N2 = (H2, L2), onde H1 e L1 (respectivamente H2 e L2) s˜ao o byte mais significativo e o byte menos significativo do n´umero N 1 (respectivamente N2). Podemos agora calcular P 1 = L1 × L2, P 2 = L1 × H2, P 3 = H1 × L2 e P 4 = H1 × H2. Note que P 1, P 2, P 3 e P 4 s˜ao n´umeros de 16 bits. Use os registros R0–R7 do banco de registros #1 para armazenar P1, P 2, P 3 e P 4. O resultado final do produto ´e un n´umero de 32 bits (i.e. de 4 bytes) obtido somando 4 n´umeros de 32 bits: S1 = (Z, Z, P 1), S2 = (Z, P 2, Z), S3 = (Z, P 3, Z) e S4 = (P 4, Z, Z), onde Z ´e un n´umero de 1 byte com todos os bits nulos. Para somar S1, S2, S3 e S4, calcule primeiro a soma SP 1 = S1 + S2 e depois SP 2 = SP 1 + S3 e SP 3 = SP 2 + S4. − No final do c´odigo o resultado (SP 3) deve ser armazenado nos registros

(12)

Lista 8 (23/11/2010)

1. Escreva um c´odigo para mover blocos de mem´oria (como a tecla mov blc), para o caso da mem´oria externa. Considere blocos de mem´oria de 256 bytes no m´aximo.

Use os registros R0–R4 para guardar o endere¸co inicial da regi˜ao fonte (5000h), o endere¸co inicial da regi˜ao destino (5005h) e o n´umero de bytes (por exemplo 20d).

Tome cuidado para n˜ao escrever sobre dados antes de transferi-los.Escreva o c´odigo come¸cando no endere¸co 6000.

2. Modifique o c´odigo acima para o caso de endere¸co inicial da regi˜ao fonte maior do que o endere¸co inicial da regi˜ao destino (por exemplo: endere¸co inicial da regi˜ao fonte = 5005h e endere¸co inicial da regi˜ao destino = 5000h; considere ainda 20d bytes a serem transferidos).

3. Escreva um c´odigo que combine os c´odigos acima e que verifique automatica-mente se o endere¸co inicial da regi˜ao fonte ´e maior ou menor do que o endere¸co inicial da regi˜ao destino. Use um salto condicionado para rodar um dos dois casos.

4. Modifique o c´odigo acima para usar subrotinas em vez de saltos condicionados. 5. Modifique o c´odigo da Lista 7 creando uma subroutina para soma de dois n´umeros de 16 bits. Resolva o exerc´ıcio da Lista 7 chamando essa subroutina duas vezes no c´odigo principal.

(13)

2. Escreva uma subrotina que, dados dois bits, calcule a fun¸c˜ao XOR entre eles. Use as opera¸c˜oes booleanas AND, OR e NOT. Lembre que XOR(a, b) = a · N OT(b) + N OT (a) · b.

3. Escreva uma subrotina que, dado um byte, use o m´etodo de paridade par (o n´umero total de 1’s deve ser par) para fixar o bit mais significativo. Para isso use a subrotina acima. Note que o bit S = D1 ⊕ D2 ´e 0 quando D1 e D2 contˆem um n´umero par de 1’s e S = 1 quando D1 e D2 contˆem um n´umero ´ımpar de 1’s. O s´ımbolo ⊕ indica a opera¸c˜ao l´ogica XOR.

4. Escreva um loop que aplique a rotina acima a cada letra do seu nome. Armazene os resultados a partir da posi¸c˜ao de mem´oria 6100.

Lista 10 (7/12/2010)

1. Resolva os exerc´ıcios propostos nas experiˆencias 9, 10 e 11 do Manual de ex-periˆencias.

Lista 11 (14/12/2010)

1. Resolva a prova do ano passado.

Escreva cada c´odigo come¸cando no endere¸co 5500h.Inicialize a pilha com o valor 2F h.

Para selecionar os v´arios bancos, n˜ao modifique o P SW mas use o en-dere¸camento direto.

Lembre que cada c´odigo ´e uma modifica¸c˜ao do c´odigo do exerc´ıcio anterior.O objetivo dessa prova ´e desvendar a frase criptografada

v k p g kˆB ˆS ˆR ou, em hexadecimal,

76 6B 70 67 6B 02 13 12 . (a) Usando o algoritmo recursivo

y = (a y) mod 28

(14)

Lembre que mod 28

fornece o resto da divis˜ao de um n´umero por 28

. Note que, para calcular mod 28

, n˜ao precisa fazer a divis˜ao.

Use os registros R0 e R1 do banco #0 para guardar os valores de a e de y0.

Guarde a lista produzida nos endere¸cos 6000h − 60F F h, i.e. guarde y1

no endere¸co 6000h, y2 no endere¸co 6001h, at´e y256no endere¸co 60F F h.

N˜ao modifique o conte´udo dos registros R0 e R1 do banco #0. (b) Agora escreva um c´odigo para o gerador de n´umeros aleat´orios de 8 bits

xn= SWAP(xn−p∀xn−q) ,

com p = 250d e q = 103d. Aqui ∀ indica a opera¸c˜ao de OR-exclusivo (ou XOR) e a opera¸c˜ao SWAP troca o nibble menos significativo com o nibble mais significativo. Observe que para calcular o valor de xn vocˆe precisa

ter guardado pelo menos os ´ultimos 250 n´umeros gerados. No nosso caso, para simplificar, vamos guardar os ´ultimos 256 valores de xn.

Use os endere¸cos 6000h − 60F F h para guardar a lista dos ´ultimos 256 valores de xn (considere este espa¸co de mem´oria como um buffer

limitado e peri´odico). Use o algoritmo recursivo do exerc´ıcio (a) acima para inicializar essa lista de 256 n´umeros.

Considere como valor x0 o n´umero guardado no endere¸co 60F F h.

As-sim, na primeira itera¸c˜ao, xn−p ser´a o n´umero guardado no endere¸co

6005h, xn−q aquele guardado no endere¸co 6098h e x1 ser´a guardado

no endere¸co 6000h.

Use os registros R0, R1 e R2 do banco #1 para apontar, respectiva-mente, para xn−p, xn−q e xn na lista dos ´ultimos 256 valores de xn.

(15)

a frase decodificada em um coment´ario no final do c´odigo. N˜ao modifique o conte´udo dos registros R0-R7 do banco #3.

Referências

Documentos relacionados

Veículos do casal Rogério Onofre e Dayse foram registrados em nome Cláudio Freitas; Houve várias trocas de mensagens suspeitas, tendo elas sido codificadas com nomes

http://revistapegn.globo.com/Noticias/noticia/2014/08/pequenas-empresas-precisam-migrar-para-o-digital.html [email protected] @andredamasceno | Mídias sociais

Imiprotrina Não estabelecido TLV-TWA ND ACGIH 2006 Praletrina Não estabelecido TLV-TWA ND ACGIH 2006 Cifenotrina-S Não estabelecido TLV-TWA ND ACGIH 2006. Butano/Propano

Na questão 16, afirma se a UC Banrisul está alinhada ao planejamento estratégico do Banco, com um mercado muito competitivo, isso faz muitas organizações repensar em mudanças

O processo foi o seguinte: gerar todos os grafos com 10 vértices eliminando grafos de grau máximo ímpar, grafos overfull e grafos neighborhood overfull; gerar o

No pico da produção foram utilizados quatro frutos por unidade experimental para caracterização da massa média de frutos, espessura da casca, diâmetros

Assim, o IFC e APAE estão promovendo ações em prol da equalização de oportunidades, ao acesso de programas que visam a melhoria da qualidade de vida das pessoas, e que serve como

Esse aspecto evidencia que boa parte da produção do município exportada vai para Anápolis e não para Goiânia, indicando que Terezópolis possui baixa relação