TrabalhosGratuitos.com - Trabalhos, Monografias, Artigos, Exames, Resumos de livros, Dissertações
Pesquisar

APS - Arquitetura de Computadores

Por:   •  17/9/2019  •  Trabalho acadêmico  •  1.566 Palavras (7 Páginas)  •  151 Visualizações

Página 1 de 7

Atividade Prática Supervisionada

Comparação entre dois números no simulador de John Von Neumann

Leonardo Barbosa Nunes de Siqueira e Diego Yudi Kikuchi Yamazato

Universidade Anhembi Morumbi, Av. Paulista, 2000, São Paulo

   Resumo ⎯  Este artigo tem como objetivo explanar duas possíveis maneiras de comparar dois números aleatórios armazenados em duas variáveis distintas. Em função disso, foi usado o simulador da arquitetura de John Von Neumann para a elaboração do código de máquina que serve de auxílio na conferência e no processamento de cada passo das operações.

  Palavras-chave John Von Neumann.

1. INTRODUÇÃO

  Um programa escrito e desenvolvido em código de máquina consiste em uma sequência definida de bytes, que são decodificados como instruções (OPCODE) e dados à serem coordenados, processados e executados pela UC (unidade de controle) e ULA (unidade lógica aritmética), ou seja, a CPU em si. Dessa forma, para que se haja uma programação lógica e efetiva, é necessário a utilização de uma linguagem de baixo nível denominada de Assembly, que é elaborada a partir de códigos mnemônicos.

 Assim sendo, como nossa grade curricular explora o desenvolvimento de conhecimento nas diversas áreas computacionais, é imprescindível termos contato com tal forma de programação em código de máquina. Sendo assim, o assunto em questão é a verificação de duas variáveis e, em seguida, constatar o maior valor entre ambos.

2. DESENVOLVIMENTO

  1. CÓDIGO DE MÁQUINA FEITO POR DIVISÃO

[pic 1]

Figura 1.  Código de Máquina por Divisão

    Para a execução do teste de verificação do número maior, pode ser utilizada a operação de divisão entre os números. Visto que a razão de um dividendo menor que o divisor pode retornar zero acompanhado de algumas casas decimais, o código teve como base esse raciocínio.

    Em princípio, são armazenados dois números aleatórios em duas variáveis dessemelhantes que servirão de auxiliares na execução. Logo após o acumulador é inicializado (LOD) com o valor da variável X, que no caso é o dividendo. Em seguida é feita a sua divisão (DIV) com o número da variável Y, que, portanto, é o divisor. Se o resultado retornar zero com mais casas decimais, significa que o dividendo é menor que o divisor, ou seja, o valor da variável Y é o maior. Nesse sentido, levando em consideração que o simulador considera apenas números inteiros e sem casas decimais, quando o retorno for equivalente a zero, é chamada a instrução de pular um certo número de linhas (JMZ) e seguir direto até a linha de número seis do código. Esta, que irá inicializar o acumulador com o número da variável Y e na sequência uma variável auxiliar Z armazenará este valor. Assim, é chamada novamente a instrução de pular linhas (JMP) até a linha de número onze, onde ocorre o encerramento (HLT) do processamento.

   Em referência ao valor da variável X e quando este for o  número maior, o processo ocorre de maneira idêntica. No entanto, após a divisão entre as variáveis onde o X é o dividendo e o Y é o divisor, o resultado será maior que zero. Desse modo, a execução seguirá normalmente sem ter as linhas de código puladas. Com isso, o acumulador é inicializado com o valor da variável Y e depois dividido com o valor da variável X, onde certamente retornará zero. Em sequência, é chamada a instrução JMZ que terá como destino a linha de número nove, que inicializará o acumulador com o valor de X e armazenará na variável auxiliar Z. Enfim, encerrando a execução do processo.

2.1.2 CAPTURA DE TELA CÓDIGO DE MÁQUINA FEITO POR DIVISÃO

2.1.2.1 Início

[pic 2]

Figura 2. Captura de Tela Máquina Von Neumann I

2.1.2.2 Meio

[pic 3]           

Figura 3. Captura de Tela Máquina Von Neumann II

2.1.2.3 Fim

[pic 4]

Figura 4. Captura de Tela Máquina Von Neumann III

2.2 CÓDIGO DE MÁQUINA FEITO POR SUBTRAÇÃO

[pic 5]

Figura 5.  Código de Máquina por Subtração

    Como é possível observar, o código de máquina realizado para comparar dois números através da subtração é, de fato, maior quando equiparado ao código da divisão. Todavia, esta constatação não interfere no nível de complexidade do código, uma vez que o mesmo segue uma estrutura/lógica simplória.

    Analisando o código, conseguimos notar a presença de seis variáveis que são fundamentais. São elas: X (utilizada para armazenar um dos valores à serem comparados), Y (utilizada para armazenar outro dos valores à serem comparados), Z (utilizada como variável fixa, assumindo o valor de 1, para auxiliar no decremento dos valores), T1 (variável auxiliar responsável por armazenar o novo valor da primeira variável (X) após cada decremento), T2 (variável auxiliar responsável por armazenar o novo valor da variável Y após cada decremento) e W (responsável por armazenar o maior valor, no fim da execução do programa).

    Sendo assim, após a definição do emprego de cada variável, é de suma importância explicar a lógica de funcionamento do código em si. Na primeira linha de comando o valor armazenado em X é passado para o acumulador (ACC), em seguida é feita a subtração de tal valor armazenado no ACC na linha de comando 2 e atualizado neste mesmo. Por conseguinte, o valor já decrementado e salvo no acumulador é transferido para a variável auxiliar T1. Caso o valor no T1 e no ACC for zero, então o conteúdo de X armazenado em T1 foi decrementado mais rapidamente que o conteúdo de T2 (que possui o valor armazenado de Y), sendo assim, a última pode ser considerada como sendo representante da maior das variáveis, então há um pulo de redirecionamento de linha de comando onde o valor de Y é passado para o ACC e, depois, tal valor é passado para a variável final W. Caso o valor salvo em T1 e ACC não for zero, então é carregado o valor de Y no ACC e há um decremento feito através da variável Z, semelhante ao processo realizado na variável X anteriormente, em seguida tal valor decrementado e atualizado do ACC é transferido para a variável auxiliar T2 que sofre uma verificação e, caso for constatado zero então tal variável T2 (representante de Y) foi decrementada mais rapidamente, sendo assim X assume o papel de maior valor e há um pulo para a linha de comando 20, que carrega o valor de X no ACC e em seguida armazena esse mesmo número na variável final W.    

...

Baixar como (para membros premium)  txt (9.6 Kb)   pdf (399.3 Kb)   docx (862.5 Kb)  
Continuar por mais 6 páginas »
Disponível apenas no TrabalhosGratuitos.com