De acordo com Malvino [1] (p. 255) o computador SAP (Simples-Quanto-Possível = Simple-As-Possible) foi projetado com o objetivo de apresentar de forma lúdica a estrutura operacional de um computador eletrónico moderno, de maneira que fique mais simples abstrair a concepção usada nos computadores eletrónicos mais modernos. Por mais estranho que possa parecer, muitos professores que atuam sobre a temática da disciplina relacionada a arquitetura e organização de computadores não fazem uso deste recurso ocasionando verdadeiro martírio para os alunos.
O uso do computador SAP pode facilitar o entendimento dos detalhes relacionados a organização de computadores e sua aplicação em linguagem de baixo nível.
Este artigo descreve brevemente a arquitetura SAP-1 e mostra duas aplicações exemplificando e utilizando-se sua linguagem de baixo nível.
A Arquitectura
A proposta da arquitetura do computador SAP é mostrada em três diferentes gerações, sendo a geração SAP-1 o primeiro estágio com vistas aos computadores eletrónicos modernos, foco da apresentação desta introdução. Assim sendo, não são apresentados elementos das gerações SAP-2 e SAP-3.
Objetiva-se com este artigo instigar professores da disciplina a fazerem da ferramenta SAP. Encontram-se no sítio Youtube diversas aulas disponibilizadas sobre o tema que podem ser utilizadas como elementos inspiradores e de embasamento para a apresentação de uma arquitetura real.
A Figura 1 apresenta a estrutura da arquitetura proposta para o SAP-1.
A arquitetura do modelo SAP-1 caracteriza-se por ser um computador organizado em barramentos, tendo como estrutura central de comunicação o barramento W de 8 bits, responsável pelo nível de compartilhamento de todos os dispositivos a ele conectado.
O dispositivo Contador de Programa faz parte da unidade de controle, possui como finalidade operacional a capacidade de efetuar a contagem de 0000 até 1111. Este dispositivo tem por finalidade enviar à memória o endereço da próxima instrução de programa a ser executada. A cada novo processamento executado o contador de programa é inicializado com valor 0000. Segundo [1] (p. 256):
Quando começa o processamento ou execução no computador, o contador de programa envia o endereço 0000 à memória. O contador de programa é então incrementado para se obter 0001. Depois da primeira instrução ser buscada e executada, o contador de programa envia o endereço 0001 à memória. Novamente o contador de programa é incrementado. Depois de a segunda instrução ser buscada e executada, o contador de programa envia o endereço 0010 à memória. Desta maneira, o contador de programa está acompanhando o desenvolvimento da próxima instrução a ser buscada e executada.
O dispositivo Entrada e REM inclui o registrador de dados e o registrador de endereços. Este dispositivo é responsável pela efetivação das ações de entrada de dados e execução das instruções de um programa. Este dispositivo também é usado para armazenar o valor passado pelo contador de programa. Os registradores deste dispositivo enviam 4 bits de endereço e 8 bits de dados à RAM pelo REM (Registrador de Endereço de Memória).
O dispositivo RAM tem por finalidade armazenar os dados e as instruções enviadas pelo programa que serão usados no computador. Este dispositivo se caracteriza por ser uma memória estática com a capacidade de armazenar 16 linhas de 8 bits cada uma. Segundo [1] (p. 256):
Durante um processamento do computador, a RAM recebe endereços de 4 bits do REM e é executada uma operação de leitura. Desta maneira, a instrução ou palavra de dados armazenada na RAM é colocada no barramento W para uso em alguma outra parte do computador.
O dispositivo Registrador de Instruções é parte da unidade de controle, tendo por finalidade receber um byte referente a uma instrução lida a partir da memória RAM. O byte recebido é dividido em dois nibbles, o nibble superior referente à própria instrução e passado ao Controlador/Sequencializador (descrito a seguir) e o nibble inferior referente a uma saída lida no barramento W quando necessário. Segundo [1] (p. 256) o registrador de instruções efetua uma operação de leitura da memória.
O dispositivo Controlador/Sequencializador é parte da unidade de controle, tendo por finalidade controlar todo o computador. Este dispositivo recebe o nibble referente à instrução a ser executada, a qual, se encontra no Registrador de Instrução, decodifica e envia uma palavra de 12 bits para o computador [2] (p. 155). Segundo Campos [2] (p. 155) a “palavra de controle é responsável por habilitar ou desabilitar cada funcionalidade de cada módulo presente no computador a fim de que ele execute uma determinada tarefa”.
O dispositivo Acumulador A caracteriza-se por ser um registrador de memória temporária que tem por finalidade armazenar operandos e resultados de processamento realizados pelo computador ([1], p. 258 & [3], p. 155). Este registrador recebe um dado transferido pelo barramento W, podendo disponibilizar este dado tanto para o dispositivo Somador/Subtrador como de volta para o barramento W.
O dispositivo Somador/Subtrador é o componente responsável pela efetivação do processamento das operações de soma e de subtração, sendo esta parte da Unidade Lógica e Aritmética do computador SAP-1. A subtração é efetuada a partir do uso do método do complemento de 2, onde para efetivar a subtração efetua uma soma do valor do acumulador com o complemento do segundo operando ([2], p. 155). Para este dispositivo realizar sua tarefa ele pega o operando (valor) do Registrador B e realiza a operação indicada (soma ou subtração) junto ao operando do Acumulador A e grava o resultado da operação executada no Acumulador A.
O dispositivo Registrador B caracteriza-se por ser um registrador de memória temporária auxiliar que coleta do barramento W determinado valor e o transfere para o dispositivo Somador/Subtrador que é parte da Unidade Lógica e Aritmética do computador SAP-1.
O dispositivo Registrador de Saída também denominado porta de saída ([1], p. 259) ou registrador de saída ([2], p. 155) é o componente responsável por coletar o resultado da operação de processamento que esteja armazenado no Acumulador A e transferi-lo para o mundo exterior e apresentá-lo junto ao dispositivo Indicador Visual Binário. Malvino [1] (p 259) acrescenta que:
Em microcomputadores as portas de saída são conectadas aos circuitos de interface que comandam dispositivos periféricos como as impressoras, os tubos de raios catódicos, as teleimpressoras etc.
O dispositivo Indicador Visual Binário é no computador SAP-1 um painel luminoso com oito LEDs (Diodo Emissor de Luz = Light-Emitting Diode) que representam na forma binária o valor que fora transferido do Acumulador A para o Registrador de Saída.
Programação em SAP-1
A arquitetura SAP-1 considera como linguagem de baixo nível um assembly com cinco mnemônicos como mostra a Tabela 1.
Soma dados da RAM com o acumulador
Mnemônico | Operação | Op-code |
---|---|---|
LDA | Carrega dados da RAM no acumulador | 0000 |
ADD | Soma dados da RAM com o acumulador | 0001 |
SUB | Subtrai dados da RAM do acumulador | 0010 |
OUT | Carrega dados da RAM no acumulador de saída | 1110 |
HLT | Interrompe o processamento | 1111 |
A partir das instruções definidas na Tabela 1 o programa da Tabela 2 calcula e mostra o resultado da operação aritmética: 7 + 2 – 1.
Note que o programa carrega o acumulador do SAP-1 com o valor 07H
do endereço DH
a partir da execução da instrução LDA DH
. Em seguida efetua a adição do valor 02H
do endereço EH
junto ao valor armazenado no acumulador com a execução da instrução ADD EH
, neste momento o acumulador possui o valor 09h
. Na sequência, o programa efetua a subtração do valor 01H
do endereço FH
do valor armazenado no acumulador com a instrução SUB FH
. A instrução OUT
tem por finalidade mostrar o resultado 08h
no formato binário 00001000
em seu indicador visual binário e a instrução HLT
finaliza o programa.
Endereço | Instrução |
---|---|
0H | LDA DH |
1H | ADD EH |
2H | SUB FH |
3H | OUT |
4H | HLT |
5H | |
6H | |
7H | |
8H | |
9H | |
AH | |
BH | |
CH | |
DH | 07H |
EH | 02H |
FH | 01H |
O programa da Tabela 3 realiza operação aritmética: 75 + 20 – 18.
Veja que programa carrega o acumulador do SAP 1 com o valor 4BH
do endereço DH
a partir da execução da instrução LDA DH
. Em seguida efetua a adição do valor 14H
do endereço EH
junto ao valor armazenado no acumulador com a execução da instrução ADD EH
, neste momento o acumulador possui o valor 5Fh
. Na sequência, o programa efetua a subtração do valor 12H
do endereço FH
do valor armazenado no acumulador com a instrução SUB FH
. A instrução OUT
apresenta o resultado 4Dh
no formato 01001101
em seu indicador visual binário e a instrução HLT
finaliza o programa.
Endereço | Instrução |
---|---|
0H | LDA DH |
1H | ADD EH |
2H | SUB FH |
3H | OUT |
4H | HLT |
5H | |
6H | |
7H | |
8H | |
9H | |
AH | |
BH | |
CH | |
DH | 4BH |
EH | 14H |
FH | 12H |
A partir do código assembly escrito, é possível converter um programa em código de máquina (Op-code) de acordo com as instruções indicadas na Tabela 1.
Os programas apresentados possuem o mesmo conjunto de instruções caracterizando o uso do mesmo algoritmo (A+B–C). No entanto cada um possui um conjunto de valores diferenciados.
Observe que nos códigos apresentados estão sendo separados os dados do programa em relação as suas instruções em áreas distintas de memória. Note que os dados estão definidos entre os endereços DH
e FH
. As instruções do programa estão definidas a partir do endereço 0H
até no máximo ao endereço CH
.
Programa 7 + 2 – 1 | Programa 75 + 20 – 18 | |||
---|---|---|---|---|
Endereço | Instrução | Endereço | Instrução | |
0000 | 0000 1101 | 0000 | 0000 1101 | |
0001 | 0001 1110 | 0001 | 0001 1110 | |
0010 | 0010 1111 | 0010 | 0010 1111 | |
0011 | 1110 | 0011 | 1110 | |
0100 | 1111 | 0100 | 1111 | |
0101 | 0101 | |||
0110 | 0110 | |||
0111 | 0111 | |||
1000 | 1000 | |||
1001 | 1001 | |||
1010 | 1010 | |||
1011 | 1011 | |||
1100 | 1100 | |||
1101 | 0000 0111 | 1101 | 0100 1011 | |
1110 | 0000 0010 | 1110 | 0001 0100 | |
1111 | 0000 0001 | 1111 | 0001 0010 |
Bibliografia
- MALVINO. A. P. Microcomputadores e Microprocessadores. São Paulo: Editora McGraw-Hill, 1985.
- CAMPOS, F. M. P. Arquitetura e Organização de Computadores. Batatais: Ação Educacional Claretiana, 2011.