Uso do simulador jarm do Prof.Anido

Atualizado em 20-maio-2015
Prof. Célio - MC 404C 2015

As atividades envolvendo E/S e interrupções usarão o simulador jarm do Prof. Anido. Ele pode ser instalado no Linux, Windows e MacOS e pode ser baixado do link arm.zip (o pacote "Java Runtime Environment", JRE, também precisa estar instalado na sua máquina). Ele está instalado no sistema Linux da IC 304, de forma que apenas a pasta de exemplos precisa ser descompactada e instalada no seu "homedir". Você deverá também baixar e imprimir o manual do simulador (pdf) e a descrição dos dispositivos de E/S(txt). Siga essas instruções para testar os exemplos e programas que você fará:

A seguir faça os seguintes exercícios opcionais; eles serão muito úteis para programar a atividade obrigatória 5, implementação via interrupções do "relógio digital/cronômetro":
  1. copie os arquivos test.s e devices.txt da pasta timer_display para uma nova pasta e insira no arquivo devices.txt mais 7 displays de 7 segmentos em endereços consecutivos, ficando assim:
    %7segdisplays Display
    #port
    0x90000
    %7segdisplays Display
    #port
    0x90001
    %7segdisplays Display
    #port
    0x90002
    %7segdisplays Display
    #port
    0x90003
    %7segdisplays Display
    #port
    0x90004
    %7segdisplays Display
    #port
    0x90005
    %7segdisplays Display
    #port
    0x90006
    %7segdisplays Display
    #port
    0x90007
    
    Insira no final do vetor digitos a constante 0x80, que é a codificação do símbolo "." (ponto) do display de 7 segmentos e ajuste o teste do contador correspondente. Teste: a única diferença é que vão aparecer 7 retangulos escuros correspondendo aos displays de 7 segmentos não usados e no 10 display, além dos dígitos 0-9 será exibido o ponto ".").
  2. Modifique o programa anterior de forma que os displays sejam sucessivamente atualizados a cada interrupção (mudança trivial no único laço do algoritmo).
  3. Modifique o programa anterior introduzindo um botão do tipo "toggle" (veja o exemplo na pasta conta_liga_leds_display); no arquivo devices.txt use 0x90009 para o endereço do botão e mude o seu nome para "On/Off": quando o botão for pressionado os displays são atualizados ciclicamente e quando pressionado novamente eles param de ser atualizados, e assim sucessivamente.

Erros comuns: