Laborat Rio 01 Roteiro F
LABORATÓRIO 1 DE AOC
Relatório apresentado à disciplina
Arquitetura
e
Organização
de
Computadores do curso de engenharia eletrônica da UTFPR, ministrada pelo professor AntônioGortan.
CURITIBA
MARÇO DE 2015
1) Explique, de forma sucinta e objetiva, a operação do programa Fibo_32.
O programa Fibo_32 calcula os 16 primeiros termos da série de Fibonacci através de um loop, e os insere em uma pilha.
2) Escreva a sequência de bytes (em hexadecimal) necessária para codificar, em linguagem de máquina, a instrução mov ecx, xxxxxx, onde xxxxxxx representa o seu número de matrícula. (Você pode consultar o manual, ou, então, modificar o programa Fibo_32.asm para conter essa instrução, assemblá-lo e verificar o resultado na listagem produzida pelo assemblador extensão .lst). Ou, ainda, linkar o programa modificado, gerando um executável, e então, carregando-o no WinDbg, verificar a codificação em linguagem de máquina).
13xx730:
00000000 B9 00146D6A
15xx697
00000000 B9 0017A199
3) Explique para que serve, e como funciona, a instrução de linguagem assembly stosd utilizada no programa.
A instrução stosd armazena o valor de eax dentro da memória apontada por edi.
4) Explique como funciona a instrução jnz utilizada no programa. Ela opera em conjunto com qual registrador da CPU? De que forma é especificado o endereço de destino do salto no caso dessa instrução?
A instrução jnz, ou "Jump when Not Zero" opera em conjunto com o registrador - ou "flag" Z da cpu, que indica se a operação resultou em um valor zero ou não, caso a flag seja "levantada", ou seja, tenha o valor 1 - significa que a operação resultou em zero e então a instrução realizará o salto para a instrução indicada por um label ou endereço posterior ao comando jnz. Caso contrário, o programa segue normalmente para a próxima linha de comando.
5) Explique a finalidade de cada uma das opções utilizadas com o assemblador (ml.exe), a saber: /c, /coff, /Fl e /Zi para gerar o módulo objeto Fibo_32.obj.
A opção