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.