2
Prova (9/12/2011, 2 horas e 40 minutos) É permitido consultar os manuais de teoria e de experiências e os códigos escritos como soluções elos exercícios. Chame o código com o seu nome (sem acentos, espaços brancos, et c. ). J. [3.0 pontos] Escreva um loop que gere a seguinte tabela , armazenando-a a par t ir da posição 6000h da memória externa : • Loop com i valendo de O a 255 : Coloque o valor atual de i na variável e. Loop com k valendo de O a 7: * Se o bit mais significativo ele e for 1, desloque e de 1 bit à esquerda, depois faça XOR de e com o valor 9Bh. * Se o bit mais significativo de e for O, desloque e de 1 bit à esquerda. Armazene o valor de e na posição i da tabela. Note que na deslocação à esquerda o bit menos significativo após a operação de deslocamento deve sempre ser O. Confira os resultados gerados pelo seu código. As primeiras oito entradas da tabela devem ser: OOh , 9Bh , ADh , 36h, Clh , 5Ah , 6Ch , F7h. 2. [2.0 pontos] Considere cada dígito do seu número USP como um byte. (Por exemplo, caso seu número USP seja 1234567, considere a sequência de bytes Olh , 02h, 03h, 04h, 05h, 06h, 07h.) Execute as seguintes operações para esse conjunto de bytes: • Inicie o acumulador em zero. Para cada byte b dos dados de entrada : Faça XOR do acumulador com o byte b. Consulte a posição da tabela (criada no exercício anterior) correspon- dente à posição contida no acumulador e armazene no próprio acumu- lador o valor guardado nessa posição da tabela. Ao final , mostre no display o valor contido no acumulador. No caso seu número USP seja 1234567, o resultado final seria ACh .

Prova (9/12/2011, 2 horas e 40 minutos)smaira/Graduação/6º Semestre... · Execute as seguintes operações para esse ... [3.0 pontos] Agora coloque em ordem crescente os números

Embed Size (px)

Citation preview

Prova (9/12/2011, 2 horas e 40 minutos)

É permitido consultar os manuais de teoria e de experiências e os códigos escritos como soluções elos exercícios. Chame o código com o seu nome (sem acentos, espaços brancos, et c. ).

J. [3.0 pontos] Escreva um loop que gere a seguinte tabela, armazenando-a a part ir da posição 6000h da memória externa:

• Loop com i valendo de O a 255:

Coloque o valor atual de i na variável e.

Loop com k valendo de O a 7:

* Se o bit mais significativo ele e for 1, desloque e de 1 bit à esquerda, depois faça XOR de e com o valor 9Bh.

* Se o bit mais significativo de e for O, desloque e de 1 bit à esquerda.

Armazene o valor de e na posição i da tabela.

Note que na deslocação à esquerda o bit menos significativo após a operação de deslocamento deve sempre ser O.

Confira os resultados gerados pelo seu código. As primeiras oito entradas da tabela devem ser: OOh, 9Bh, ADh, 36h, Clh , 5Ah , 6Ch, F7h.

2. [2.0 pontos] Considere cada dígito do seu número USP como um byte. (Por exemplo, caso seu número USP seja 1234567, considere a sequência de bytes Olh , 02h, 03h, 04h, 05h , 06h , 07h.) Execute as seguintes operações para esse conjunto de bytes:

• Inicie o acumulador em zero.

• Para cada byte b dos dados de entrada:

Faça XOR do acumulador com o byte b.

Consulte a posição da tabela (criada no exercício anterior) correspon­dente à posição contida no acumulador e armazene no próprio acumu­lador o valor guardado nessa posição da tabela.

• Ao final , mostre no display o valor contido no acumulador.

No caso seu número USP seja 1234567, o resultado final seria ACh.

3. [2 .0 pontos] Modifique o código do exercício anterior para implementar o seguinte algoritmo:

• Inicie o acumulador em zero.

• Faça um loop :

Leia uma tecla do teclado do kit .

Se a tecla não for uma tecla numérica, saia do loop.

Se a tecla for uma tecla numérica:

* Faça XOR do acumulador com o valor da tecla.

* Consulte a posição da tabela correspondente à posição contida no acumulador e armazene no próprio acumulador o valor guardado nessa pos1çao.

* Limpe o display.

* Exiba o valor do acumulador no display.

Digite seu número USP nas teclas do kit e confira que, ao final , o número exibido no display é o mesmo da questão anterior.

4. [3 .0 pontos] Agora coloque em ordem crescente os números da tabela crüida no primeiro exercício. Para fazer isso, use um algoritmo baseado em trocas:

• Varra a lista inteira trocando dois números em posições consecutivas na lista se o primeiro for maior do que o segundo.

• Repita o passo anterior até que nenhuma troca aconteça após varrer a lista completamente.

Considere os números como inteiros sem sinal.

1 ..... ;/ 1 \,

/

/ /