A Arquitetura do Comp
Como já dito, o COMP é extremamente simples. Ele trabalha sobre números decimais de 4 dígitos (sem sinal) e é composto por:
- um acumulador (AC), utilizado para cálculos;
- um indicador de sobrecarga (C) que indica quando o resultado de uma operação não cabe no acumulador;
- um contador de programa (CP) que indica qual posição de memória contem que contém a próxima instrução a ser executada;
- uma memória com 100 posições, referenciadas por endereços de dois dígitos decimais (00 a 99);
- um dispositivo de entrada (teclado); e
- um dispositivo de saída (vídeo).
As instruções do COMP são codificadas em números de quatro dígitos com o formato IOMM.
O dígito O é o código da operação. A tabela abaixo descreve as operações disponíveis. E indica o endereço do operando e (E) o valor do operando. x <- y indica armazenar o valor y na posição apontada por x.
I e MM indicam o operando a ser utilizado pela instrução:
- I = 0 endereçamento direto. MM é o endereço do operando a ser usado pela instrução;
- I = 1 endereçamento indireto. A posição de endereço MM contém (nos dois dígitos menos significativos) o endereço do operando; e
- I = 2 endereçamento imediato. MM é o próprio operando
Alguns exemplos de instrução, supondo que a posição 10 contém 0020 e a posição 20 contem 9901.
- 0010 (AC <- 0020) Carrega no acumulador o valor na posição de endereço 10 (endereçamento direto).
- 1010 (AC <- 9901) A posição de endereço 10 contém o endereço de onde será obtido o operando (endereçamento indireto).
- 2010 (AC <- 0010) Carrega no acumulador o valor contido na própria instrução (endereçamento imediato).
- 0020 (AC <- 9901), 2299 (AC <- 0000, C <- 1) Carrega 9901 no acumulador (endereçamento direto) e depois soma 99 (endereçamento imediato). Como o resultado (10000) não cabe no acumulador, o indicador de sobrecarga (C) é ligado para indicar o vai-um.
Uma instrução do COMP é codificada em Assembler da seguinte forma:
- mnemônico (três letras)
- separador (zero ou mais espaços)
- modo de endereçamento (* se indireto, $ se imediato, ausente se direto)
- operando (um ou dois dígitos)
LDA 10
LDA *10
LDA $10
Nenhum comentário:
Postar um comentário