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.