Você está na página 1de 2

ENE0056 – Sistemas Microprocessados – 2021/1

Prova Treino A0 (não vale nota) – 02 de agosto de 2021


Início 08:00 e Término 08:50
Alerta: A solução da prova é individual. Os alunos não devem conversar entre si ou compartilhar soluções
durante sua realização. Contrafações serão verificadas.

A sequência de Fibonacci é bastante conhecida. Nela, cada elemento é formado pela soma dos dois
anteriores. Para efeito deste exercício vamos considerar que os dois primeiros elementos são iguais a 0 e 1.
Assim, a sequência é:
0, 1, 1, 2, 3, 5, 8, 13, ...

Esta prova pede para escrever a sub-rotina CHECK_FIB capaz de verificar se a sequência apresentada (16
bits) é, realmente, uma sequência de Fibonacci.

A sub-rotina CHECK_FIB recebe:


R5 = endereço de início da sequência
R6 = quantidade de elementos da sequência (incluindo os dois primeiros elementos, o 0 e 1).

A sub-rotina CHECK_FIB retorna:


R7 = 1 se é uma sequência verdadeira e 0 se foi encontrado um elemento errado.
R8 = posição do primeiro elemento errado (se houver elemento errado).

Observações:
1) Será levada em conta a qualidade da solução. Escreva programas compactos e velozes.
2) Dada a assimetria na disponibilidade de acesso à Internet e para garantir isonomia aos alunos, o professor
não responderá a perguntas durante o período de prova.
3) Questões desesperadas ou urgentes devem fazer uso do grupo no WhatsApp.
4) ENVIE SUA SOLUÇÃO EM UM ÚNICO ARQUIVO, COM O SEGUINTE NOME
A0-XXXXXX.asm, onde XXXX = somente os números de sua matrícula.
Na primeira linha de seu arquivo, coloque sua matrícula e seu nome completo.

Dica: Renomeie e envie o próprio arquivo do CCS, já que para a correção, este arquivo será copiado e
colado no CCS.
; Sua matrícula e seu nome
;;;;
;-------------------------------------------------------------------------------
; Main loop here
;-------------------------------------------------------------------------------
PROVA_A0: MOV #SEQ1,R5 //Endereço de início
MOV #8,R6 //Quantidade de elementos
CALL #CHECK_FIB
JMP $
NOP
;
; Sub-rotina
; Recebe: R5 = endereço de início da sequência a ser verificada
; R6 = quantidade de elementos da sequência
; Retorna: R7 = se OK (R7=1) se errada (R7=0)
; R8 = posição do primeiro elemento errado
;
CHECK_FIB: ;;;;coloque aqui sua sub-rotina
RET

; Diferentes sequências para provar seu programa


.data
SEQ1: .word 0,1,1,2,3,7,9,15 ;8 elementos e de o nr 6 é o primeiro errado

SEQ2: .word 1,0,1,2,3,5,8,13 ;8 elementos e de o nr 1 é o primeiro errado

SEQ3: .word 0,1,1,2,3,5,8,13,22,35,57 ;11 elementos e o nr 9 é o primeiro errado

SEQ4: .word 0,1,1,2,3,5,8,13,21,34,55,89,144,233,377,610 ;25 elementos o de nr 22


.word 987,1597,2584,4181,6765,10940,17711,28657,46368 ;é o primeiro errado

SEQ_OK: .word 0,1,1,2,3,5,8,13,21,34,55,89,144,233,377,610 ;25 elementos


.word 987,1597,2584,4181,6765,10946,17711,28657,46368 ;sem erros

Você também pode gostar