Você está na página 1de 15

Curso FFI0396 - Microprocessadores I

2010

Lista 1 (10/08/2010)
1. Calcule as seguintes converses: o 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. octal hexadecimal decimal 774 ... ... 775 ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... 3. Calcule 11 + (+8) 9 + (-6) 14 - (+7) -13 + (+9) -11 - (-10)

2. Complete a tabela

transformando os nmeros decimais em binrios e usando o complemento de 2. u a 4. Calcule 3A616 + 54B16 , 4F 116 3AB16 , 46EA16 + C8716 . 1

5. Escreva a sua data de nascimento (dia/ms/ano) usando nmeros hexadecimais e u e octais. 6. Quantos bytes so necessrios para representar, em cdigo BCD, o valor decimal a a o 664219? 7. Escreva o seu primeiro nome usando o cdigo ASCII. Para cada byte xe o bit o mais signicativo usando o cdigo de paridade com paridade par. o

Lista 2 (17/08/2010)
1. Desenhe o circuito correspondente ` funao a c 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?

A0 B0 A1 B1 A2 B2 A3 B3

4. Use um multiplexador com 3 bits para seleao de dados e 8 canais de 1 bit na c entrada para implementar a funao maioria c X = f (A, B, C) = AB C + ABC + ABC + ABC . 5. Considere um indicador com 7 segmentos: ele tem 7 pinos (1 para cada segmento) e um segmento se ilumina quando voc aplica um sinal 1 no pino correse pondente (veja a gura abaixo). Sendo que os nmeros so representados no u a cdigo BCD voc vai precisar de um decodicador BCD 7 segmentos. Como o e voc projetaria esse decodicador? e

a f e d g b c
A B C D
a b c d e f g

6. O que faz o circuito representado na pgina seguinte? (A gura retirada do a e livro Structured Computer Organization do A.S. Tanenbaum.)

Lista 3 (26/08/2010)
1. No mdulo SDM 9431 o teclado selecionado usando o endereo (de 16 bits) o e c 111010xxxxxxxxxx (decodicaao parcial de endereo). Verique que esses endereos correspondem c c c aos endereos (em hexadecimal) E800 at EBF F . c e Analogamente, o display de cristal l quido, o conversor digital-analgico e o cono versor anlogo-digital so selecionados usando, respectivamente, os endereos a a c 111011xxxxxxxxxx 111001xxxxxxxxxx 111000xxxxxxxxxx. Verique que esses endereos correspondem aos endereos EC00 at EF F F , c c e E400 at E7F F e E000 at E3F F (respectivamente). e e Considerando os endereos usados para os quatros perifricos, sobrou algum c e endereo no intervalo E000 at EF F F ? c e 2. Voc tem 4 memrias de 1024 8 bits e quer criar uma memria de 4096 8 e o o bits. De quantos bits de endereo voc vai precisar? Como vo ser organizadas c e a as linhas de endereo? c 3. Construa a tabela verdade (entradas a e b, sa das S1 e S2) do circuito abaixo e faa um esquema de montagem usando um chip 7400. c

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

4. O que faz o circuito representado na pgina seguinte? (A gura retirada do a e livro Structured Computer Organization do A.S. Tanenbaum.)

Lista 4 (6/10/2010)
1. Proponha (e desenhe) um circuito para montagem na aula prtica de circuitos a lgicos e construa a sua tabela verdade. o

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 cdigo comeando no endereo 5000. o c c No use nmeros decimais. a u Tente reduzir o nmero de linhas do cdigo. u o Modique o cdigo acima fazendo a troca (A) (B) em vez de (B) (A). o Por que o problema formulado desta maneira vai dar um cdigo errado? o

Lista 6 (27/10/2010)
1. Resolva os exerc cios abaixo usando fortran ou C. 8

O objetivo dessa prova desvendar a frase criptografada e v k p g k BSR 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 nmeros. Lembre que u 8 mod 2 fornece o resto da diviso de um nmero por 28 . a u (b) Agora escreva um cdigo para o gerador de nmeros aleatrios de 8 bits o u o xn = SWAP(xnp xnq ) , com p = 250d e q = 103d. Aqui indica a operaao de OR-exclusivo (ou c XOR) e a operaao SWAP troca o nibble menos signicativo com o nibble c mais signicativo. Observe que para calcular o valor de xn voc precisa e ter guardado pelo menos os ultimos 250 nmeros gerados. No nosso caso u 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 espao de memria como um buer c o limitado e peridico). Use o algoritmo recursivo do exerc (a) acima o cio para inicializar essa lista de 256 nmeros. u Considere como valor x0 o nmero guardado na ultima componente u do vetor. Assim, na primeira iteraao, xnp ser o nmero guardado c a u na sexta componente do vetor, xnq aquele guardado na componente nmero 153 do vetor e x1 ser guardado na primeira componente. u a Use as variveis R0, R1 e R2 para apontar, respectivamente, para a xnp , xnq e xn na lista dos ultimos 256 valores de xn . Use a varivel R3 para guardar o ultimo valor gerado de xn . a 16 Faa 2 = 65536d = 10000h iteraoes do gerador e escreva o ultimo c c valor gerado, i.e. x65536 , na varivel R. a (c) Usando a operaao OR-exclusivo (ou XOR) e a mscara guardada na c a varivel R decodique a frase criptografada (use a tabela do cdigo ASCII a o no manual de prtica). a 9

Lista 7 (16/11/2010)
1. Escreva um cdigo para fazer a soma 13751+23987+17831 (nmeros decimais). o u Transforme os nmeros decimais em nmeros hexadecimais. u u Use os registros R0R5 do banco de registros #0 para armazenar os trs e nmeros (observe que os nmeros so em preciso dupla e precisamos de u u a a dois bytes para armazenar cada nmero). u No nal do cdigo a soma deve ser armazenada no acumulador e no registro o B, usando o acumulador para guardar o byte mais alto.

Lista 7bis (16/11/2010)


1. Escreva um cdigo para fazer o produto 13751 23987 (nmeros decimais). o u Transforme os nmeros decimais em nmeros hexadecimais. u u Use os registros R0R3 do banco de registros #0 para armazenar os dois nmeros (observe que os nmeros so em preciso dupla e precisamos de u u a a dois bytes para armazenar cada nmero). u Para calcular o produto escreva os dois nmeros como N 1 = (H1, L1) e u N 2 = (H2, L2), onde H1 e L1 (respectivamente H2 e L2) so o byte mais a signicativo e o byte menos signicativo do nmero N 1 (respectivamente u N 2). 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 so nmeros de a u 16 bits. Use os registros R0R7 do banco de registros #1 para armazenar P 1, P 2, P 3 e P 4. O resultado nal do produto un nmero de 32 bits (i.e. e u de 4 bytes) obtido somando 4 nmeros de 32 bits: S1 = (Z, Z, P 1), S2 = u (Z, P 2, Z), S3 = (Z, P 3, Z) e S4 = (P 4, Z, Z), onde Z un nmero de 1 e u 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 nal do cdigo o resultado (SP 3) deve ser armazenado nos registros o R0R3 do banco de registros #2.

10

Lista 8 (23/11/2010)
1. Escreva um cdigo para mover blocos de memria (como a tecla mov blc), para o o o caso da memria externa. Considere blocos de memria de 256 bytes no o o mximo. a Use os registros R0R4 para guardar o endereo inicial da regio fonte c a (5000h), o endereo inicial da regio destino (5005h) e o nmero de bytes c a u (por exemplo 20d). Tome cuidado para no escrever sobre dados antes de transferi-los. a Escreva o cdigo comeando no endereo 6000. o c c 2. Modique o cdigo acima para o caso de endereo inicial da regio fonte maior o c a do que o endereo inicial da regio destino (por exemplo: endereo inicial da c a c regio fonte = 5005h e endereo inicial da regio destino = 5000h; considere a c a ainda 20d bytes a serem transferidos). 3. Escreva um cdigo que combine os cdigos acima e que verique automaticao o mente se o endereo inicial da regio fonte maior ou menor do que o endereo c a e c inicial da regio destino. Use um salto condicionado para rodar um dos dois a casos. 4. Modique o cdigo acima para usar subrotinas em vez de saltos condicionados. o 5. Modique o cdigo da Lista 7 creando uma subroutina para soma de dois o nmeros de 16 bits. Resolva o exerc da Lista 7 chamando essa subroutina u cio duas vezes no cdigo principal. o 6. Modique o cdigo da Lista 7bis creando uma subroutina para soma de dois o nmeros de 32 bits. Resolva o exerc da Lista 7bis chamando essa subroutina u cio trs vezes no cdigo principal. e o

Lista 9 (30/11/2010)
1. Escreva o seu nome (somente o primeiro nome) usando o cdigo ASCII e o armazene-o a partir da posiao de memria 6000, usando um byte para cada c o letra. Lembre que o cdigo ASCII usa somente 7 bits para cada letra (o bit o mais signicativo de cada byte igual a 0). Armazene no registro R0 o nmero e u de letras contidas no seu primeiro nome. 11

2. Escreva uma subrotina que, dados dois bits, calcule a funao XOR entre eles. c Use as operaoes booleanas AND, OR e NOT. Lembre que XOR(a, b) = a c N OT (b) + N OT (a) b. 3. Escreva uma subrotina que, dado um byte, use o mtodo de paridade par (o e nmero total de 1s deve ser par) para xar o bit mais signicativo. Para isso u use a subrotina acima. Note que o bit S = D1 D2 0 quando D1 e D2 e contm um nmero par de 1s e S = 1 quando D1 e D2 contm um nmero e u e u mpar de 1s. O s mbolo indica a operaao lgica XOR. c o 4. Escreva um loop que aplique a rotina acima a cada letra do seu nome. Armazene os resultados a partir da posiao de memria 6100. c o

Lista 10 (7/12/2010)
1. Resolva os exerc cios propostos nas experincias 9, 10 e 11 do Manual de exe perincias. e

Lista 11 (14/12/2010)
1. Resolva a prova do ano passado. Escreva cada cdigo comeando no endereo 5500h. o c c Inicialize a pilha com o valor 2F h. Para selecionar os vrios bancos, no modique o P SW mas use o ena a dereamento direto. c Lembre que cada cdigo uma modicaao do cdigo do exerc anterior. o e c o cio O objetivo dessa prova desvendar a frase criptografada e v k p g k BSR 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 nmeros. u 12

Lembre que mod 28 fornece o resto da diviso de um nmero por 28 . a u 8 Note que, para calcular mod 2 , no precisa fazer a diviso. a a Use os registros R0 e R1 do banco #0 para guardar os valores de a e de y0 . Guarde a lista produzida nos endereos 6000h 60F F h, i.e. guarde y1 c no endereo 6000h, y2 no endereo 6001h, at y256 no endereo 60F F h. c c e c No modique o contedo dos registros R0 e R1 do banco #0. a u (b) Agora escreva um cdigo para o gerador de nmeros aleatrios de 8 bits o u o xn = SWAP(xnp xnq ) , com p = 250d e q = 103d. Aqui indica a operaao de OR-exclusivo (ou c XOR) e a operaao SWAP troca o nibble menos signicativo com o nibble c mais signicativo. Observe que para calcular o valor de xn voc precisa e ter guardado pelo menos os ultimos 250 nmeros gerados. No nosso caso, u para simplicar, vamos guardar os ultimos 256 valores de xn . Use os endereos 6000h 60F F h para guardar a lista dos ultimos c 256 valores de xn (considere este espao de memria como um buer c o limitado e peridico). Use o algoritmo recursivo do exerc (a) acima o cio para inicializar essa lista de 256 nmeros. u Considere como valor x0 o nmero guardado no endereo 60F F h. Asu c sim, na primeira iteraao, xnp ser o nmero guardado no endereo c a u c 6005h, xnq aquele guardado no endereo 6098h e x1 ser guardado c a no endereo 6000h. c Use os registros R0, R1 e R2 do banco #1 para apontar, respectivamente, para xnp , xnq e xn na lista dos ultimos 256 valores de xn . Use o registro R3 do banco #1 para guardar o ultimo valor gerado de xn . Faa 216 = 65536d = 10000h iteraoes do gerador e escreva o ultimo c c valor gerado, i.e. x65536 , no registro R0 do banco #2. (c) Modique o cdigo do exerc (b) acima usando, no ultimo item, uma o cio 16 subrotina para gerar os 2 nmeros aleatrios. u o (d) Guarde nos registros R0-R7 do banco #3 as 8 letras (em hexadecimal) da frase criptografada. Usando a operaao OR-exclusivo (ou XOR) e a c mscara guardada no registro R0 do banco #2 decodique a frase cripa tografada (use a tabela do cdigo ASCII no manual de prtica). Escreva o a 13

a frase decodicada em um comentrio no nal do cdigo. No modique a o a o contedo dos registros R0-R7 do banco #3. u

14