LABORATORIO 1 AOC
Universidade Tecnológica Federal do Paraná
Engenharia Eletrônica
Relatório de Arquitetura e Organização de computadores
Laboratório 1 (WINDBG)
Alunos:
Estêvão Luís Ronzani
Regis Moura Dantas
Curitiba
2014
1) Explique, de forma sucinta e objetiva, a operação do programa
Fibo_32.
O programa fibo_32, disponibilizado pelo professor, tem a função de calcular os 16 primeiros números da sequência de Fibonacci. Calcula os 16 primeiros pois o professor limitou a 16 com o Array size. Para isso, são alocadas duas variáveis, An_1 e An_2 e inicializadas com os dois primeiros termos dessa sequência. A variável N_termos tem o valor de AR_SIZE, que é inicializada com o valor 16, e também criada uma lista Fibo para os 16 termos.
O registro ecx recebe N_termos, eax recebe An_1, ebx recebe An_2, e edi recebe o endereço para o inicio do array. Um laço é iniciado e o valor de eax é salvo na pilha, eax e ebx são somados para formar o próximo termo da sequência e assim armazenado na próxima posição do array. Ebx recebe o valor antigo na pilha, e ao final é checado se chegou ao número de termos desejados, caso não tenha chegado aos 16 termos pedidos, o programa roda o laço novamente.
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, gorando um executável, e então, carregando-o no WinDbg, verificar a codificação em linguagem de máquina). No inicio do código, definimos o nome MATRICULA como 1048295, numero de matrícula do aluno Regis. Logo após o label _meuMain, adicionamos a instrução: mov ecx, [MATRICULA]. Assemblamos o código seguindo o procedimento realizado