Roteiro do 6° laboratório

Transcrição

Roteiro do 6° laboratório
UNIFEI – Universidade Federal de Itajubá
IESTI - Instituto de Engenharia de Sistemas e Tecnologia da Informação
ELT044 – Laboratório de Microcontroladores
Roteiro do 6° laboratório
Trabalho com a pilha de dados e com o modo de endereçamento indexado
Nome:
____________________________________________________________________________________
Matrícula:
_________________
Nesta atividade, serão abordados exemplos do emprego da pilha e dados e do modo de
enderaçamento indexado do microprocessador HCS12. O ambiente de desenvolvimento a ser utilizado é o
CodeWarrior 5.1.
Atividade 1:
O seguinte programa efetua a soma de 10 valores não sinalizados de 8 bits cada. Esses valores estão
dispostos a partir do endereço de memória $1000. O programa desconsidera o estouro de representação que
pode ocorrer durante a soma dos termos e armazena o resultado na posição de memória $1020.
Soma R = V1 + V2 + V2 + V3 + ... + V10
01:
02:
03:
09:
11: Inicio:
11:
10:
12:
13: Somar:
14:
14:
15:
16:
17:
18:
19:
20:
21:
XDEF Inicio
ABSENTRY Inicio
ORG $4000 ; Origem da memória de programa
LDX #$1000 ; X apontará para a posição dos valores a serem somados
LDAB #10
; O acumulador B manterá o valor de índice de soma
CLRA
; O acumulador A manterá o resultado parcial
ADDA 0, X
INX
DECB
BNE Somar
STAA $1020
ORG $FFFE
DC.W Inicio
; Efetuar a operação A ← A + M[ X ]
;X←X+1
; Decrementar o índice
; Repetir enquanto a índice for maior que 0
; Armazenar o resultado
; ponteiro para o vetor de RESET
END
Para esta primeira versão do programa, a implemente e a simule no CodeWarrior a fim de verificar
sua operação. Para tanto, a modifique de forma a incluir a sequência 1, 2, 3, 4, 5, ..., 10 nas posições de
memória que serão varridas ao se efetuar a soma. Levante, por meio do próprio ambiente de
desenvolvimento, a listagem de memória de programa gerada. Levante também os valores dos registros A, B
e X para cada iteração de execução do laço de repetição do programa.
ELT044 – Prof. Rodrigo de Paula Rodrigues
Laboratório 6
1/5
Atividade 2:
Modifique o programa anterior de forma a utilizar a instrução ADDA com modo de endereçamento
em pré-incremento tendo-se como base o índice X. Implemente e simule o novo programa obtido.
Transcreva para a folha de respostas seu código-fonte.
Atividade 3:
Uma forma de calcular o MMC entre dois valores é gerar a série de múltiplos para cada uma deles e
então procurar pela primeira ocorrência entre múltiplos iguais. Como exemplo, a tabela abaixo exibe uma
forma de encontrar o MMC entre os valores 3 e 4.
Valor x 1 x 2 x 3 x 4 x 5 x 6 x 7 ...
3
4
3
4
6
8
9
12
12
16
15
20
18
24
21
28
...
...
Desenvolva um programa que encontre o MMC entre dois valores a partir de suas sequências de
múltiplos dispostas em memória. Considere que a primeira sequência esteja presente a partir do endereço
$1100 e a segunda, $1200. Considere, ainda, que no endereço $1000 esteja armazenada a quantidade de
termos presentes em cada uma das listas e que ao endereço subsequente deva ser enviado o MMC
encontrado. Necessariamente utilize a pilha de dados para varrer pelo menos uma das duas listas. Cada item
das listas é um número não sinalizado de 8 bits.
ELT044 – Prof. Rodrigo de Paula Rodrigues
Laboratório 6
2/5
Folha de respostas
Roteiro do 6° laboratório
(deve ser entregue impressa e assinada em até 1 dia da data do laboratório)
Nome:
____________________________________________________________________________________
Matrícula:
_________________
Atividade 1
ELT044 – Prof. Rodrigo de Paula Rodrigues
Laboratório 6
3/5
Atividade 2
ELT044 – Prof. Rodrigo de Paula Rodrigues
Laboratório 6
4/5
Atividade 3
ELT044 – Prof. Rodrigo de Paula Rodrigues
Laboratório 6
5/5