MC404 - 2º Semestre 2010
Profs. Mario L. Côrtes, Paulo Centoducatte, Ricardo Pannain
Atividade 3 (facultativa): Programa que tira um "retrato de si mesmo"
1. Escreva e teste um programa que grava na memória RAM suas próprias
instruções no formato ascii-hexadecimal,
ou seja,
você deve converter cada instrução
do programa para ascii-hexadecimal,
onde cada 4 bits de uma instrução
geram um caracter ascii-hexadecimal (´0´-´9´, ´A´-´F´).
A fim de aumentar a legibilidade
ao depurar o programa,
V. poderá gravar na RAM um caracter branco (0x20) após cada
dois caracteres hexadecimais. Você deve otimizar o
seu programa de forma a usar o menor
número possível de instruçôes e portanto ocupar o menor espaço possivel na
RAM
(por exemplo, o modelo AVR ATtyny 2313 tem apenas 128 bytes de RAM o que limitaria
o seu programa a
apenas cerca de 30 bytes!).
Sugestão: Escreva uma pequena subrotina
para converter um inteiro de 4 bits em um caracter ascii-hexadecimal
('0'...'9', 'A'...'F'), lembrando que na representação ASCII hâ 7 caracteres entre
o caracter '9' e o caracter 'A' (veja
aqui a representação interna do conjunto de caracteres
ISO8859-1 que
contém o conjunto ASCII acrescido de
letras acentuadas).
Verifique a correção do programa comparando visualmente o conteúdo final do vetor na RAM
(selecione
View → Memory Window 2 → Data) com o
da janela de memória do programa (selecione
View → Memory → Program) do simulador
(ou com o do arquivo .lst gerado pelo montador o qual, no
entanto, mostra os bytes no formato "liitle endian").
2. Modifique o programa acima de forma a gravar a imagem ascii-hexadecial na EEPROM
em vez de na memória
RAM (se o seu programa tiver n instruções, na EEPROM serão
gravados 4n ou 6n bytes). Utilize as rotinas de
gravação na EEPROM
vistas em aula: e2prom_rotinas.asm.