Comp. Prog.

O que é?

Computadores e Programação é uma disciplina obrigatória do curso de Ciência da Computação da UFRJ, ministrada por Nelson Quilula Vasconcelos.

Na primeira parte do curso, é ensinado o assembly da Máquina 2002, que é uma "máquina" que o prof. Quilula projetou no ano de 2002 para dar o curso de Comp. Prog. A Máquina 2002 é composta por um teletipo, uma memória de 64KB, e um processador com quatro registradores de 8 bits, dois registradores de 16 bits e um registrador de flags (desconsiderando os registradores usados para acesso à memória). A Máquina 2002 possui apenas 256 instruções, portanto é de fácil aprendizado.

A Máquina 2002 não existe de verdade, em hardware. Ela é emulada a partir de um emulador que roda em DOS, criado pelo próprio Quilula. Além disso, existe um assembler (montador) disponível.

Na segunda parte do curso, é ensinado o assembly para a arquitetura Intel x86.

Teletipo

"Teletipo" é uma tradução incorreta do termo em inglês "teletype". Tele quer dizer longe; type, neste contexto, quer dizer digitar, e não tipo. Um "teletype" era composto de um teclado e de uma impressora ou monitor, e era usado no início da computação como uma forma de comunicação bidirecional entre o usuário e o computador (que na época tinha o tamanho de vários armários).

Como usar a Máquina 2002

Um guia básico de como usar a Máquina 2002 está disponível. É voltado para quem nunca usou o montador, carregador ou emulador da Máquina 2002, mas já tem um conhecimento básico do assembly e de sua arquitetura.

Programas para a Máquina 2002

Programas criados por alunos, com diversas finalidades e utilidades.

Arquivo fonte (assembly) Arquivo objeto (hexadecimal) Autor Última modificação Descrição
contador.asm contador.o Denilson 2004-09-22 Conta quantas vezes cada byte foi lido. As quantidades ficam armazenadas em nos endereços 0FFxxh, onde xx é valor do byte lido.
echonum.asm echonum.o Denilson 2004-09-23 Contém várias funções úteis:
lenum
Lê um número na base decimal (de 0 a 255).
escnum
Escreve um número de 0 a 255 na base decimal.
printstring
Imprime uma string terminada por caractere nulo.
newline
Imprime uma nova linha (CRLF, ou "\r\n").
dump.asm dump.o Denilson 2004-09-22 Faz um "memory dump", ou seja, imprime todo o conteúdo da memória. Algumas vezes é útil para debug.
dumper3.asm dumper3.o Denilson 2006-04-11 Interactive Memory Dumper permite visualizar o conteúdo de qualquer região de memória da Máquina 2002. Exibe o "dump" em formato raw e em hexadecimal. Como o nome diz, é interativo. Possui um pequeno prompt. Versões anteriores: 0.1, 0.2
gerador.asm gerador.o Denilson 2004-09-22 Imprime todos os bytes de 0 a 255.
ppm.asm ppm.o Denilson 2004-09-22 "Imprime" uma imagem. Na verdade, o código da imagem é impresso. Insira uma "fita" na Máquina 2002 para salvar essa imagem num arquivo (extensão ppm) e depois abri-la em algum visualizador de imagens.
smile.asm smile.o Denilson 2004-09-22 Faz um "smile" ficar andando de uma lado para o outro na tela. Talvez rode rápido demais. O ideal é rodar a Máquina 2002 dentro de emulador (como o DOSBox) para poder limitar a velocidade.
sokoban.asm sokoban.o Denilson 2005-03-31 Jogo "sokoban", com suporte a múltiplos níveis. Página dedicada ao Sokoban.
vogais.asm vogais.o Alexandre Oliveira 2004-09-27 Conta quantas vogais maiúsculas são lidas. A comparação com as vogais é feita com uma "busca binária" (ou árvore binária).

Código-fonte da Máquina 2002

Professor Quilula gentilmente cedeu o código-fonte da Máquina 2002. Para compilar, é necessário usar o TASM.

Contato

Esta página foi útil para você? Tem alguma sugestão? Alguma crítica? Algum ponto onde esta página possa ser melhorada? Deseja adicionar algum código (seu ou não)? Por favor entre em contato: denilsonsa@gmail.com