15
Curso FFI0396 - Microprocessadores I 2010

Exercicios asm 8051 microprocessadores

Embed Size (px)

Citation preview

Page 1: Exercicios asm 8051 microprocessadores

Curso FFI0396 - Microprocessadores I

2010

Page 2: Exercicios asm 8051 microprocessadores

Lista 1 (10/08/2010)

1. Calcule as seguintes conversoes:

• 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 tabelaoctal hexadecimal decimal774 . . . . . .

775 . . . . . .

. . . . . . . . .

. . . . . . . . .

. . . . . . . . .

. . . . . . . . .

. . . . . . . . .

. . . . . . . . .

3. Calcule

• 11 + (+8)

• 9 + (-6)

• 14 - (+7)

• -13 + (+9)

• -11 - (-10)

transformando os numeros decimais em binarios e usando o complemento de 2.

4. Calcule

• 3A616 + 54B16,

• 4F116 − 3AB16,

• 46EA16 + C8716.

1

Page 3: Exercicios asm 8051 microprocessadores

5. Escreva a sua data de nascimento (dia/mes/ano) usando numeros hexadecimaise octais.

6. Quantos bytes sao necessarios para representar, em codigo BCD, o valor decimal664219?

7. Escreva o seu primeiro nome usando o codigo ASCII. Para cada byte fixe o bitmais significativo usando o codigo de paridade com paridade par.

Lista 2 (17/08/2010)

1. Desenhe o circuito correspondente a funcao

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

2. Construa portas NOT, AND, OR e XOR usando somente portas NOR.

3. O que faz o circuito abaixo?

B0A0

A1B1

B2

B3

A2

A3

2

Page 4: Exercicios asm 8051 microprocessadores

4. Use um multiplexador com 3 bits para selecao de dados e 8 canais de 1 bit naentrada para implementar a funcao maioria

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

5. Considere um indicador com 7 segmentos: ele tem 7 pinos (1 para cada seg-mento) e um segmento se ilumina quando voce aplica um sinal 1 no pino corres-pondente (veja a figura abaixo). Sendo que os numeros sao representados nocodigo BCD voce vai precisar de um decodificador BCD → 7 segmentos. Comovoce projetaria esse decodificador?

g

a

d

e

f

c

b

C

AB

D

ba

c

efg

d

6. O que faz o circuito representado na pagina seguinte? (A figura e retirada dolivro Structured Computer Organization do A.S. Tanenbaum.)

3

Page 5: Exercicios asm 8051 microprocessadores

4

Page 6: Exercicios asm 8051 microprocessadores

Lista 3 (26/08/2010)

1. No modulo SDM 9431 o teclado e selecionado usando o endereco (de 16 bits)

111010xxxxxxxxxx

(decodificacao parcial de endereco). Verifique que esses enderecos correspondemaos enderecos (em hexadecimal) E800 ate EBFF .

Analogamente, o display de cristal lıquido, o conversor digital-analogico e o con-versor analogo-digital sao selecionados usando, respectivamente, os enderecos

111011xxxxxxxxxx

111001xxxxxxxxxx

111000xxxxxxxxxx.

Verifique que esses enderecos correspondem aos enderecos EC00 ate EFFF ,E400 ate E7FF e E000 ate E3FF (respectivamente).

Considerando os enderecos usados para os quatros perifericos, sobrou algumendereco no intervalo E000 ate EFFF ?

2. Voce tem 4 memorias de 1024 × 8 bits e quer criar uma memoria de 4096 × 8bits. De quantos bits de endereco voce vai precisar? Como vao ser organizadasas linhas de endereco?

3. Construa a tabela verdade (entradas a e b, saıdas S1 e S2) do circuito abaixoe faca um esquema de montagem usando um chip 7400.

5

Page 7: Exercicios asm 8051 microprocessadores

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

4. O que faz o circuito representado na pagina seguinte? (A figura e retirada dolivro Structured Computer Organization do A.S. Tanenbaum.)

6

Page 8: Exercicios asm 8051 microprocessadores

7

Page 9: Exercicios asm 8051 microprocessadores

Lista 4 (6/10/2010)

1. Proponha (e desenhe) um circuito para montagem na aula pratica de circuitoslogicos 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 codigo comecando no endereco 5000.

− Nao use numeros decimais.

− Tente reduzir o numero de linhas do codigo.

• Modifique o codigo acima fazendo a troca (A)↔ (B) em vez de (B)← (A).

− Por que o problema formulado desta maneira vai dar um codigo errado?

Lista 6 (27/10/2010)

1. Resolva os exercıcios abaixo usando fortran ou C.

8

Page 10: Exercicios asm 8051 microprocessadores

• 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 28 ,

com a = 71d e y0 = 31d, crie uma lista de 256 numeros. Lembre quemod 28 fornece o resto da divisao de um numero por 28.

(b) Agora escreva um codigo para o gerador de numeros aleatorios de 8 bits

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

com p = 250d e q = 103d. Aqui ∀ indica a operacao de OR-exclusivo (ouXOR) e a operacao SWAP troca o nibble menos significativo com o nibble

mais significativo. Observe que para calcular o valor de xn voce precisater guardado pelo menos os ultimos 250 numeros gerados. No nosso casovamos guardar os ultimos 256 valores de xn.

− Use um vetor de 256 componentes para guardar a lista dos ultimos256 valores de xn (considere este espaco de memoria como um buffer

limitado e periodico). Use o algoritmo recursivo do exercıcio (a) acimapara inicializar essa lista de 256 numeros.

− Considere como valor x0 o numero guardado na ultima componentedo vetor. Assim, na primeira iteracao, xn−p sera o numero guardadona sexta componente do vetor, xn−q aquele guardado na componentenumero 153 do vetor e x1 sera guardado na primeira componente.

− Use as variaveis R0, R1 e R2 para apontar, respectivamente, paraxn−p, xn−q e xn na lista dos ultimos 256 valores de xn.

− Use a variavel R3 para guardar o ultimo valor gerado de xn.

− Faca 216 = 65536d = 10000h iteracoes do gerador e escreva o ultimovalor gerado, i.e. x65536, na variavel R.

(c) Usando a operacao OR-exclusivo (ou XOR) e a mascara guardada navariavel R decodifique a frase criptografada (use a tabela do codigo ASCII

no manual de pratica).

9

Page 11: Exercicios asm 8051 microprocessadores

Lista 7 (16/11/2010)

1. Escreva um codigo para fazer a soma 13751+23987+17831 (numeros decimais).

− Transforme os numeros decimais em numeros hexadecimais.

− Use os registros R0–R5 do banco de registros #0 para armazenar os tresnumeros (observe que os numeros sao em precisao dupla e precisamos dedois bytes para armazenar cada numero).

− No final do codigo a soma deve ser armazenada no acumulador e no registroB, usando o acumulador para guardar o byte mais alto.

Lista 7bis (16/11/2010)

1. Escreva um codigo para fazer o produto 13751× 23987 (numeros decimais).

− Transforme os numeros decimais em numeros hexadecimais.

− Use os registros R0–R3 do banco de registros #0 para armazenar os doisnumeros (observe que os numeros sao em precisao dupla e precisamos dedois bytes para armazenar cada numero).

− Para calcular o produto escreva os dois numeros como N1 = (H1, L1) eN2 = (H2, L2), onde H1 e L1 (respectivamente H2 e L2) sao o byte maissignificativo e o byte menos significativo do numero N1 (respectivamenteN2). Podemos agora calcular P1 = L1 × L2, P2 = L1 × H2, P3 =H1 × L2 e P4 = H1 × H2. Note que P1, P2, P3 e P4 sao numeros de16 bits. Use os registros R0–R7 do banco de registros #1 para armazenarP1, P2, P3 e P4. O resultado final do produto e un numero de 32 bits (i.e.de 4 bytes) obtido somando 4 numeros de 32 bits: S1 = (Z,Z, P1), S2 =(Z, P2, Z), S3 = (Z, P3, Z) e S4 = (P4, Z, Z), onde Z e un numero de 1byte com todos os bits nulos. Para somar S1, S2, S3 e S4, calcule primeiroa soma SP1 = S1 + S2 e depois SP2 = SP1 + S3 e SP3 = SP2 + S4.

− No final do codigo o resultado (SP3) deve ser armazenado nos registrosR0–R3 do banco de registros #2.

10

Page 12: Exercicios asm 8051 microprocessadores

Lista 8 (23/11/2010)

1. Escreva um codigo para mover blocos de memoria (como a tecla mov blc), parao caso da memoria externa. Considere blocos de memoria de 256 bytes nomaximo.

− Use os registros R0–R4 para guardar o endereco inicial da regiao fonte(5000h), o endereco inicial da regiao destino (5005h) e o numero de bytes(por exemplo 20d).

− Tome cuidado para nao escrever sobre dados antes de transferi-los.

− Escreva o codigo comecando no endereco 6000.

2. Modifique o codigo acima para o caso de endereco inicial da regiao fonte maiordo que o endereco inicial da regiao destino (por exemplo: endereco inicial daregiao fonte = 5005h e endereco inicial da regiao destino = 5000h; considereainda 20d bytes a serem transferidos).

3. Escreva um codigo que combine os codigos acima e que verifique automatica-mente se o endereco inicial da regiao fonte e maior ou menor do que o enderecoinicial da regiao destino. Use um salto condicionado para rodar um dos doiscasos.

4. Modifique o codigo acima para usar subrotinas em vez de saltos condicionados.

5. Modifique o codigo da Lista 7 creando uma subroutina para soma de doisnumeros de 16 bits. Resolva o exercıcio da Lista 7 chamando essa subroutinaduas vezes no codigo principal.

6. Modifique o codigo da Lista 7bis creando uma subroutina para soma de doisnumeros de 32 bits. Resolva o exercıcio da Lista 7bis chamando essa subroutinatres vezes no codigo principal.

Lista 9 (30/11/2010)

1. Escreva o seu nome (somente o primeiro nome) usando o codigo ASCII earmazene-o a partir da posicao de memoria 6000, usando um byte para cadaletra. Lembre que o codigo ASCII usa somente 7 bits para cada letra (o bitmais significativo de cada byte e igual a 0). Armazene no registro R0 o numerode letras contidas no seu primeiro nome.

11

Page 13: Exercicios asm 8051 microprocessadores

2. Escreva uma subrotina que, dados dois bits, calcule a funcao XOR entre eles.Use as operacoes booleanas AND, OR e NOT. Lembre que XOR(a, b) = a ·

NOT (b) +NOT (a) · b.

3. Escreva uma subrotina que, dado um byte, use o metodo de paridade par (onumero total de 1’s deve ser par) para fixar o bit mais significativo. Para issouse a subrotina acima. Note que o bit S = D1 ⊕ D2 e 0 quando D1 e D2contem um numero par de 1’s e S = 1 quando D1 e D2 contem um numeroımpar de 1’s. O sımbolo ⊕ indica a operacao logica XOR.

4. Escreva um loop que aplique a rotina acima a cada letra do seu nome. Armazeneos resultados a partir da posicao de memoria 6100.

Lista 10 (7/12/2010)

1. Resolva os exercıcios propostos nas experiencias 9, 10 e 11 do Manual de ex-

periencias.

Lista 11 (14/12/2010)

1. Resolva a prova do ano passado.

• Escreva cada codigo comecando no endereco 5500h.

• Inicialize a pilha com o valor 2Fh.

• Para selecionar os varios bancos, nao modifique o PSW mas use o en-derecamento direto.

• Lembre que cada codigo e uma modificacao do codigo 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

yi+1 = (a yi) mod 28 ,

com a = 71d e y0 = 31d, crie uma lista de 256 numeros.

12

Page 14: Exercicios asm 8051 microprocessadores

− Lembre que mod 28 fornece o resto da divisao de um numero por 28.Note que, para calcular mod 28, nao precisa fazer a divisao.

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

− Guarde a lista produzida nos enderecos 6000h−60FFh, i.e. guarde y1no endereco 6000h, y2 no endereco 6001h, ate y256 no endereco 60FFh.

− Nao modifique o conteudo dos registros R0 e R1 do banco #0.

(b) Agora escreva um codigo para o gerador de numeros aleatorios de 8 bits

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

com p = 250d e q = 103d. Aqui ∀ indica a operacao de OR-exclusivo (ouXOR) e a operacao SWAP troca o nibble menos significativo com o nibble

mais significativo. Observe que para calcular o valor de xn voce precisater guardado pelo menos os ultimos 250 numeros gerados. No nosso caso,para simplificar, vamos guardar os ultimos 256 valores de xn.

− Use os enderecos 6000h − 60FFh para guardar a lista dos ultimos256 valores de xn (considere este espaco de memoria como um buffer

limitado e periodico). Use o algoritmo recursivo do exercıcio (a) acimapara inicializar essa lista de 256 numeros.

− Considere como valor x0 o numero guardado no endereco 60FFh. As-sim, na primeira iteracao, xn−p sera o numero guardado no endereco6005h, xn−q aquele guardado no endereco 6098h e x1 sera guardadono endereco 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.

− Use o registro R3 do banco #1 para guardar o ultimo valor gerado dexn.

− Faca 216 = 65536d = 10000h iteracoes do gerador e escreva o ultimovalor gerado, i.e. x65536, no registro R0 do banco #2.

(c) Modifique o codigo do exercıcio (b) acima usando, no ultimo item, umasubrotina para gerar os 216 numeros aleatorios.

(d) Guarde nos registros R0-R7 do banco #3 as 8 letras (em hexadecimal)da frase criptografada. Usando a operacao OR-exclusivo (ou XOR) e amascara guardada no registro R0 do banco #2 decodifique a frase crip-tografada (use a tabela do codigo ASCII no manual de pratica). Escreva

13

Page 15: Exercicios asm 8051 microprocessadores

a frase decodificada em um comentario no final do codigo. Nao modifiqueo conteudo dos registros R0-R7 do banco #3.

14