Olá neste exemplo será demonstrada a utilização do processador hipotético neander para isso será demonstrada a utilização completa de todo o conjunto de ferramentas menus e funcionalidades do neander un neander possui uma memória total de 256 posições ou seja 8 bits de endereçamento para instruções e dados portanto é preciso tomar cuidado na hora de escrever programas no neander pois a área de instruções não deve invadir a área de dados por isso usamos a seguinte convenção da posição zero até a posição 127 usamos a memória para instruções e da posição 128 até a 255 usamos a memória
para dados o neander também possui um acumulador de 8 bits representado pelo ac e um apontador de programa de 8 bits pelo PC o acumulador recebe operandos que são carregados da Memória também serve para armazenar valores na memória e serve para guardar resultados de operações entre valores porém o acumulador só tem capacidade para armazenar um valor por vez de até 8 bits o apontador de programa simplesmente aponta para a posição de memória Onde está sendo executado ou onde será exado o programa ele começa sempre na posição zero de memória para facilitar na sua correção e
evitar complexidade no menu arquivo temos as opções de carregar salvar salvar texto e sair a opção salvar abre uma janela para você escolher aonde você quer salvar o seu arquivo ne completo você só define o local onde quer salvar o arquivo e o nome do arquivo clique em salvar a opção carregar simplesmente abre uma janela para você selecionar um programa neander anteriormente salvo e carregá-lo para o neander a opção salvar texto salva somente a memória do seu programa neander com todas as instruções e dados que o mesmo possui uma janela será aberta e você escolhe
a onde você quer salvar seu arquivo e Define um nome para mesmo após clicar em salvar outra janela será aberta perguntando qual o endereço Inicial e final da área de instruções do programa e o endereço Inicial e final da área de dados do programa após informar todos os campos só clicar em Ok no menu editar temos as opções de decimal e hexadecimal geralmente deixamos a opção decimal marcada que é a representação dos números no nosso programa neander mas também é possível que todos os números sejam representados em hea marcando a opção hexadecimal abaixo do acumulador
temos dois botões 0.9 e 0 PF o 0.9 significa representação em decimal e 0 p. F significa representação em decimal no menu visualizar deixamos todas as opções marcadas pois desejamos visualizar as janelas de memória do programa e de dados os mnemônicos e os mnemônicos relativos no menu executar temos as opções de rodar passo alterar AC alterar PC e zerar PC quando você termina de escrever seu programa em neander você pode executar das duas formas rodar todo o programa completo visualizando apenas os resultados finais das operações clicando em rodar ou pressionando F9 ou executar passo a
passo a cada clique nesta opção você executa uma instrução por vez até o programa terminar ou pressionando F8 a opção alterar a c altera o valor do acumulador naquele momento antes de iniciar um programa é é bom verificar se o acumulador está zerado a opção alterar PC altera o valor do apontador do programa ou seja para qual endereço o apontador do programa está apontando naquele momento também temos a opção zerar PC que é simplesmente zera o PC antes de iniciarmos um programa devemos gerar o PC para que o programa comece a executar da posição zero
de memória na janela principal do neander temos a esquerda memória de instruções do programa e à direita a memória de dados do programa abaixo temos as representações numéricas de todas as instruções do neander ou seja se queremos efetuar a soma entre números usamos a instrução add mas representamos pelo número 48 essa instrução basicamente se queremos inserir um valor na memória de dados basta selecionarmos essa posição e digitarmos algum valor por exemplo na posição 131 o valor 55 e pressionar enter Pronto agora a posição 131 contém o valor 55 na memória de dados para inserirmos uma
instrução na memória de instruções basta selecionarmos a posição de memória desejada e digitarmos a representação numérica desta instrução e se for de referência à memória digitamos logo após o endereço que deve ser referenciado por exemplo para inserirmos add na posição zero do programa basta digitarmos 48 e pressionar enter e logo após o endereço que contém o valor que queremos somar por exemplo a posição 131 e pressionar Enter o ne é composto pelas seguintes instruções nop H Jump not or end Jump zer Jump negative Lda ST e add noop não realiza nenhuma ação no programa hlt
significa h h significa o fim da execução do programa ou seja todo programa deve terminar na instrução H ou ele vai seguir executando indefinidamente com o tempo jmp significa Jump Jump serve para você pular para outra posição de memória para isso você escreve o número que representa o Jump que é 128 e logo após digito o endereço para o qual o programa vai seguir executando após ess Jump note simplesmente efetua o complemento de um número no acumulador Ou seja inverte todos os seus bits de zero para 1 e de um para zer or e end
efetuam as operações lógicas or e end bit a bit do conteúdo do acumulador com o conteúdo da posição de memória que for diferenciado por exemplo temos a opção or que é representada pelo número 64 e logo após digitamos a posição de memória que contém o dado com que queremos realizar a instrução h e o resultado será armazenado no acumulador jz e JN significam respectivamente Jump zer e Jump negative o Jump zer efetua um jump para a posição referenciada se o acumulador conter um número zero caso contrário o programa segue sua sua execução a partir da
próxima instrução após o Jump zero o Jump negative funciona da mesma maneira porém ele só efetua desil para a posição referenciada se o número contido pelo acumulador for negativo Lda significa load e serve para carregar o conteúdo de uma posição de memória para o acumulador digitamos o número apresenta instrução load que é 32 e logo após digitamos o endereço do qual queremos carregar certo dado vou colocar no endereço 128 o número 20 e efetuar um Lda neste endereço e após usar a instrução h a agora vou clicar em executar passo a passo para serem visualizadas
todas as interações durante a execução Vimos que o número 20 foi carregado para o acumulador Sta significa Store e faz o contrário do Lda stta armazena o conteúdo do acumulador na memória Vamos demonstrar o uso do Sta da seguinte maneira vamos inicializar o acumulador no menu executar e na opção alterar AC colocamos o valor 30 e logo após zeramos o pc também zeramos nossa memória de instruções do programa e agora vamos digitar o número que representa instrução ST que é 16 e após digitar o endereço onde queremos armazenar o conteúdo do acumulador neste caso vamos
armazenar no endereço 129 e logo após digitar a instrução H agora clicamos em rodar o programa no menu executar Vimos que o valor do acumulador foi armazenado na posição 129 de memó a DD efetua a operação de soma no neander mas para efetuar uma soma no neander é preciso carregar um valor da memória para o acumulador e após somar com outro valor da memória pois o acumulador só suporta um número digitamos o número representa a instrução add e logo após digitamos o endereço de memória que contém o valor que queremos somar ao acumulador e o
resultado é armazenado no acumulador na janela principal do neander temos o ac e o PC representados em decimal e abaixo tem várias bolinhas verdes escuras quando acesas elas indicam o bit 1 e apagadas indicam bit zer ali significa Justamente a representação binária do AC e do PC estas duas luzes n e z significam respectivamente se o acumulador contém um número negativo E se o acumulador contém um zero mais abaixo temos dois botões um serve para rodar o programa completo e este serve para rodar o programa passo a passo ou seja as mesmas opções existentes no
menu executar na parte de execução temos o número de acessos à memória até aquele determinado momento e instruções indicam quantas instruções foram executadas até o momento na parte de instrução temos o campo registrador de instruções que indica em representação decimal qual instrução está sendo está sendo executada naquele momento e sua referência à memória se a instrução for de referência à memória E também temos o campo mnemônico que indica qual instrução está sendo executada mas no formato de mnemônico que são as letras que representam as instruções basicamente foi explicada cada funcionalidade deste processador hipotético e nos
próximos vídeos veremos como construir alguns programas com funções básicas no nean este vídeo foi desenvolvido como escopo do projeto SEAD unipampa no grupo de pesquisa great o material foi produzido pelos bolsistas Luciano Brun e Camilo Alonso sob a orientação do professor Sandro Camargo