MC404 - 2º Semestre 2009
Prof. Célio Guimarães - IC - sala 40
Atualizado em: 04/09/2009
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.