5
Arquitetura de Computadores
UFAL
4
Arquitetura de Computadores
UFAL
10
Arquitetura de Computadores
UFAL
2
Arquitetura de Computadores
UFAL
9
Arquitetura de Computadores
PUC
3
Arquitetura de Computadores
MULTIVIX
2
Arquitetura de Computadores
INATEL
36
Arquitetura de Computadores
INATEL
3
Arquitetura de Computadores
UERJ
1
Arquitetura de Computadores
PUC
Texto de pré-visualização
Pretendese implementar no P3 um programa que considere uma carta com 3 tipos operador número letra Cada tipo tem 4 possibilidades de acordo com a seguinte tabela Tipos Formas Códigos Operador 0 1 2 3 Número 1 2 3 4 0 1 2 3 Letra A B C D 0 1 2 3 Uma carta é codificada num só número de 6 bits sendo os dois bits menos significativos para letra os seguintes para o número e os mais significativos para o operador Assim a carta 2D é convertida nos códigos 213 que em binário fica 10b01b11b e na codificação de 6 bits fica 100111b ou 39 em decimal a 1 Pretendese que implemente uma subrotina para descodificar uma carta nos códigos de cada tipo Entrada R1 tem o número com a carta codificada no código de 6 bits Saída i R2 código do operador ii R3 código do número iii R4 código da letra b 1 Pretendese que implemente uma subrotina que receba uma lista de códigos de cartas A lista termina com um código inválido ou seja um valor igual ou superior a 64 Deverá ser calculada a frequência de cada código Entrada R1 tem o endereço da lista de códigos das cartas Saída i FreqOperador endereço de 4 posições com a frequência de cada código para este operador ii FreqNumero endereço de 4 posições iii FreqLetra endereço de 4 posições c 1 Pretendese que implemente uma subrotina para verificar se duas cartas têm o mesmo código num dos tipos operador número ou letra Entrada R1 código da carta 1 R2 código da carta 2 Saída R3 1 se um dos códigos é igual 0 cc d 1 Pretendese que implemente uma subrotina para saber quantos pares de cartas têm um tipo igual numa lista de código de cartas Entrada R1 tem o endereço da lista de códigos das cartas Saída R1 resultado Execute os testes seguintes às subrotinas implementadas Apresentamos já alguns resultados para validação Testes A Entrada R1 Saída R2 R3 R4 23 113 57 321 Testes B Entrada R1 Saída FreqOperador FreqNumero FreqLetra 124835163144511 4734152 134420100 FreqOperador 7 2 5 1 Testes C Entrada R1 R2 Saída R3 13 40 0 40 31 0 13 31 1 55 22 Testes D Entrada R1 Saída R1 1248351631445114734152134420100 134031100 1 41406316585439233532163966239 1172161702457435131100 4156521712224836576093755 27624262042521102863818 1016366136100 De seguida apresentase um programa de teste que deve utilizar de modo a executar os testes após completar com as suas alíneas Caso não tenha realizado uma alínea comente o código que chamaria essa alínea Programa de teste zona de dados ORIG 8000h ResA TAB 16 8000h 8008h FreqOperador STR 0000 8010h FreqNumero STR 0000 8014h FreqLetra STR 0000 8018h ResC TAB 4 801ch ResD TAB 8 8020h cartas Lista1 STR 1248351631445114734152134420100 Lista2 STR 134031100 Lista3 STR 414063165854392335321639662391172161702457435131100 Lista4 STR 4156521712224836576093755276242620425211028638181016366136100 zona do código ORIG 0000h inicialização do stack Inicio MOV R1 fd1fh MOV SP R1 teste alínea A MOV R1 23 CALL identificador da subrotina solicitada na alínea A MOV R1 ResA MOV MR1 R2 MOV MR11 R3 MOV MR12 R4 MOV R1 57 CALL identificador da subrotina solicitada na alínea A MOV R1 ResA MOV MR18 R2 MOV MR19 R3 MOV MR110 R4 teste alínea B MOV R1 Lista1 CALL identificador da subrotina solicitada na alínea B teste alínea C MOV R1 13 MOV R2 40 CALL identificador da subrotina solicitada na alínea C MOV R1 ResC MOV MR1 R3 MOV R1 40 MOV R2 31 CALL identificador da subrotina solicitada na alínea C MOV R1 ResC MOV MR11 R3 MOV R1 13 MOV R2 31 CALL identificador da subrotina solicitada na alínea C MOV R1 ResC MOV MR12 R3 MOV R1 55 MOV R2 22 CALL identificador da subrotina solicitada na alínea C MOV R1 ResC MOV MR13 R3 teste alínea D MOV R1 Lista1 CALL identificador da subrotina solicitada na alínea D MOV R2 ResD MOV MR2 R1 MOV R1 Lista2 CALL identificador da subrotina solicitada na alínea D MOV R2 ResD MOV MR21 R1 MOV R1 Lista3 CALL identificador da subrotina solicitada na alínea D MOV R2 ResD MOV MR22 R1 MOV R1 Lista4 CALL identificador da subrotina solicitada na alínea D MOV R2 ResD MOV MR23 R1 Fim BR Fim Deve apresentar o resultado da execução do programa de teste os ciclos de relógio e instruções bem como a zona da memória em que são gravados os resultados A execução do programa de teste sem o código de qualquer alínea realizada Clock 446 Instructions 42 8000 0000 0000 0000 0000 0000 0000 0000 0000 8008 0000 0000 0000 0000 0000 0000 0000 0000 8010 0000 0000 0000 0000 0000 0000 0000 0000 8018 0000 0000 0000 0000 0000 0000 0000 0000 8020 8028 8038 803c 8058 0000 0000 0000 0000 BOM TRABALHO
5
Arquitetura de Computadores
UFAL
4
Arquitetura de Computadores
UFAL
10
Arquitetura de Computadores
UFAL
2
Arquitetura de Computadores
UFAL
9
Arquitetura de Computadores
PUC
3
Arquitetura de Computadores
MULTIVIX
2
Arquitetura de Computadores
INATEL
36
Arquitetura de Computadores
INATEL
3
Arquitetura de Computadores
UERJ
1
Arquitetura de Computadores
PUC
Texto de pré-visualização
Pretendese implementar no P3 um programa que considere uma carta com 3 tipos operador número letra Cada tipo tem 4 possibilidades de acordo com a seguinte tabela Tipos Formas Códigos Operador 0 1 2 3 Número 1 2 3 4 0 1 2 3 Letra A B C D 0 1 2 3 Uma carta é codificada num só número de 6 bits sendo os dois bits menos significativos para letra os seguintes para o número e os mais significativos para o operador Assim a carta 2D é convertida nos códigos 213 que em binário fica 10b01b11b e na codificação de 6 bits fica 100111b ou 39 em decimal a 1 Pretendese que implemente uma subrotina para descodificar uma carta nos códigos de cada tipo Entrada R1 tem o número com a carta codificada no código de 6 bits Saída i R2 código do operador ii R3 código do número iii R4 código da letra b 1 Pretendese que implemente uma subrotina que receba uma lista de códigos de cartas A lista termina com um código inválido ou seja um valor igual ou superior a 64 Deverá ser calculada a frequência de cada código Entrada R1 tem o endereço da lista de códigos das cartas Saída i FreqOperador endereço de 4 posições com a frequência de cada código para este operador ii FreqNumero endereço de 4 posições iii FreqLetra endereço de 4 posições c 1 Pretendese que implemente uma subrotina para verificar se duas cartas têm o mesmo código num dos tipos operador número ou letra Entrada R1 código da carta 1 R2 código da carta 2 Saída R3 1 se um dos códigos é igual 0 cc d 1 Pretendese que implemente uma subrotina para saber quantos pares de cartas têm um tipo igual numa lista de código de cartas Entrada R1 tem o endereço da lista de códigos das cartas Saída R1 resultado Execute os testes seguintes às subrotinas implementadas Apresentamos já alguns resultados para validação Testes A Entrada R1 Saída R2 R3 R4 23 113 57 321 Testes B Entrada R1 Saída FreqOperador FreqNumero FreqLetra 124835163144511 4734152 134420100 FreqOperador 7 2 5 1 Testes C Entrada R1 R2 Saída R3 13 40 0 40 31 0 13 31 1 55 22 Testes D Entrada R1 Saída R1 1248351631445114734152134420100 134031100 1 41406316585439233532163966239 1172161702457435131100 4156521712224836576093755 27624262042521102863818 1016366136100 De seguida apresentase um programa de teste que deve utilizar de modo a executar os testes após completar com as suas alíneas Caso não tenha realizado uma alínea comente o código que chamaria essa alínea Programa de teste zona de dados ORIG 8000h ResA TAB 16 8000h 8008h FreqOperador STR 0000 8010h FreqNumero STR 0000 8014h FreqLetra STR 0000 8018h ResC TAB 4 801ch ResD TAB 8 8020h cartas Lista1 STR 1248351631445114734152134420100 Lista2 STR 134031100 Lista3 STR 414063165854392335321639662391172161702457435131100 Lista4 STR 4156521712224836576093755276242620425211028638181016366136100 zona do código ORIG 0000h inicialização do stack Inicio MOV R1 fd1fh MOV SP R1 teste alínea A MOV R1 23 CALL identificador da subrotina solicitada na alínea A MOV R1 ResA MOV MR1 R2 MOV MR11 R3 MOV MR12 R4 MOV R1 57 CALL identificador da subrotina solicitada na alínea A MOV R1 ResA MOV MR18 R2 MOV MR19 R3 MOV MR110 R4 teste alínea B MOV R1 Lista1 CALL identificador da subrotina solicitada na alínea B teste alínea C MOV R1 13 MOV R2 40 CALL identificador da subrotina solicitada na alínea C MOV R1 ResC MOV MR1 R3 MOV R1 40 MOV R2 31 CALL identificador da subrotina solicitada na alínea C MOV R1 ResC MOV MR11 R3 MOV R1 13 MOV R2 31 CALL identificador da subrotina solicitada na alínea C MOV R1 ResC MOV MR12 R3 MOV R1 55 MOV R2 22 CALL identificador da subrotina solicitada na alínea C MOV R1 ResC MOV MR13 R3 teste alínea D MOV R1 Lista1 CALL identificador da subrotina solicitada na alínea D MOV R2 ResD MOV MR2 R1 MOV R1 Lista2 CALL identificador da subrotina solicitada na alínea D MOV R2 ResD MOV MR21 R1 MOV R1 Lista3 CALL identificador da subrotina solicitada na alínea D MOV R2 ResD MOV MR22 R1 MOV R1 Lista4 CALL identificador da subrotina solicitada na alínea D MOV R2 ResD MOV MR23 R1 Fim BR Fim Deve apresentar o resultado da execução do programa de teste os ciclos de relógio e instruções bem como a zona da memória em que são gravados os resultados A execução do programa de teste sem o código de qualquer alínea realizada Clock 446 Instructions 42 8000 0000 0000 0000 0000 0000 0000 0000 0000 8008 0000 0000 0000 0000 0000 0000 0000 0000 8010 0000 0000 0000 0000 0000 0000 0000 0000 8018 0000 0000 0000 0000 0000 0000 0000 0000 8020 8028 8038 803c 8058 0000 0000 0000 0000 BOM TRABALHO