Todos os arquivos abaixo também podem ser encontrados no site oficial da disciplina Computadores e Programação.
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.
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
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.
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".
A unidade de fita da Máquina 2002 é representada pelas três linhas inferiores da tela. Ela possui essencialmente três comandos:
in irá ler um byte deste arquivo (ou fita), e não mais do teclado. Caso o arquivo chegue ao fim, a máquina ficará parada, esperando alguma ação. É necessário remover a "fita" para que a máquina possa voltar a ler do teclado.out irá gravar um byte neste arquivo (ou fita), além de imprimi-lo na tela. Se o arquivo já existir, será apagado antes do início da gravação.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).