Como usar a Máquina 2002

Requerimentos

Todos os arquivos abaixo também podem ser encontrados no site oficial da disciplina Computadores e Programação.

Objetivo desta página

O objetivo desta página é mostrar os procedimentos básicos de como usar o emulador, o montador e o carregador da Máquina 2002, assim como alguns detalhes sórdidos que possam existir.

Este página não ensinará a arquitetura ou o assembly da Máquina 2002. Parte-se do pressuposto de que o leitor já tem um conhecimento básico de ambos.

Criando programas para a Máquina 2002

A primeira coisa a saber é que os endereços de 0000h até 0FFFh pertencem à ROM da Máquina 2002, e, portanto, não podem ser usados para escrita. Deste modo, a primeira coisa ser sempre colocada no início de cada programa para a Máquina 2002 é uma pseudo-instrução que indique qual o endereço inicial onde o programa será carregado.

org 1000h

O valor 1000h é o mínimo possível. Pode-se escolher qualquer valor, mas 1000h é o mais prático (veremos mais a frente por quê).

Logo depois, você pode digitar o código assembly livremente, incluindo EQU, DB, DW e até mesmo outros ORG. Tudo depois de um ponto-e-vírgula é considerado comentário. Códigos ASCII podem ser inseridos facilmente colocando o caractere desejado entre aspas duplas (ao contrário do NASM, que usa aspas simples). Strings podem ser inseridas de forma similar.

Uma forma boa de inserir comentários é "dividindo" seu código-fonte ao meio, verticalmente: à esquerda, código assembly; à direita, comentários.

Por fim, todas as instruções, nomes de registradores e rótulos (labels) são "case insensitive" no montador da Máquina 2002.

org 1000h

mov A,"@" ;Colocando o caractere arroba em A
out A     ;Imprimindo
mov A,32  ;Colocando o caractere espaço em A
out A     ;Imprimindo
in A      ;Lendo um caractere
in B      ;Lendo outro caractere
out B     ;Imprimindo o segundo caractere
out A     ;Imprimindo o primeiro caractere
halt      ;Parando a máquina

Transformando o fonte (assembly) em objeto (hexadecimal)

Por convenção, usaremos a extensão ASM para arquivos fonte, e a extensão O para arquivos objeto.

Salve o programa que você acabou de digitar como exemplo.asm. Se preferir, copie o exemplo acima. A seguir, utilize o programa monta.com.

C:> MONTA EXEMPLO.ASM EXEMPLO.O

Você pode utilizar o programa monta.com de várias formas:

Quando o nome do arquivo objeto for perguntado e o usuário responder com uma linha em branco, o código objeto (hexadecimal) será impresso na tela (stdout).

O programa montador mostrará uma cópia do código fonte (indicando os erros encontrados), juntamente com uma tabela de rótulos (labels). Quando um programa começa a ficar muito grande, torna-se conveniente redirecionar toda essa informação para um arquivo.

C:> MONTA EXEMPLO.ASM EXEMPLO.O > LOG.TXT

Isto irá salvar todas as mensagens do montador para um arquivo com o nome LOG.TXT. Pode-se abrir este arquivo num editor de textos para descobrir quais foram os erros encontrados, assim como para ajudar no processo de depuração.

Possíveis erros ao rodar o montador da Máquina 2002

Runtime error 002
Este erro significa File not found. Pode acontecer caso você tenha digitado o nome do arquivo errado, ou caso você escreva um nome maior do que suportado pelo DOS. Lembre-se de que o montador foi escrito em Turbo Pascal para DOS, e suporta apenas arquivos com 8.3 caracteres.

Carregando o programa para dentro da Máquina 2002

Até uma aula depois da primeira prova, o prof. Quilula não explica como usar o carregador nem o montador. O método usado para "montar" o programa é completamente manual (para cada instrução, olhe na tabela o código correspondente e escreva-o). A "montagem manual", embora lenta e cansativa, não deve ser desprezada, pois é pedida na prova.

Por outro lado, o método de se carregar um programa sem usar o devido carregador é muito mais demorado, cansativo e sujeito a erros. Este método "manual" consiste em inserir diretamente na memória da Máquina 2002 os valores hexadecimais de cada byte, usando uma interface não muito prática. Felizmente, existe um programa carregador que faz todo o trabalho sujo por nós. Este programa está escrito na linguagem da Máquina 2002 e localiza-se na ROM, mais precisamente no endereço 0000h.

Para usar o carregador, basta iniciar a Máquina 2002 com o IP apontando para 0000h.

Uma vez iniciado o carregador, será impressa uma mensagem na tela e serão lidas diversas linhas que seguem a mesma sintaxe do arquivo objeto. Você pode digitar o conteúdo do arquivo objeto à mão, porém é muito mais prático deixar que o próprio emulador da Máquina 2002 faça isto por você. Para tal, é necessário aprender a utilizar a "unidade de fita" associada ao "teletipo".

Usando a unidade de fita

A unidade de fita da Máquina 2002 é representada pelas três linhas inferiores da tela. Ela possui essencialmente três comandos:

Apenas uma "fita" pode estar inserida por vez. Em outras palavras, não é possível ler de um arquivo ao mesmo tempo em que se grava em outro arquivo (ou no mesmo arquivo).

Usando o carregador juntamente com a unidade de fita

  1. Inicie a Máquina 2002 (maq2002.com).
  2. Insira a fita na leitora (ou seja, aperte Del, digite o nome do arquivo objeto, aperte Enter).
  3. Inicie a execução do carregador (o IP já começa zerado), apertando Page Down.
  4. Espere o carregador terminar a leitura.
  5. Remova a fita (aperte End).
  6. O valor de IP já é deixado em 1000h (por este motivo é conveniente fazer seus programas começarem neste endereço).
  7. Quando quiser iniciar o seu programa, aperte Page Down