Trabalho 1

Os seguintes exercícios devem ser codificados em linguagem de montagem para o computador hipotético Ramses. Número de componentes e data de entrega estão definidos em outras áreas do site.
 
Exercício 1. Faça um programa que multiplique dois números inteiros positivos de 8 bits usando o método de somas-e-deslocamentos e forneça o resultado em 16 bits. Observe o seguinte mapa de memória para as variáveis de entrada.

posição 128:

multiplicando

posição 129:

multiplicador

posição 130:

byte mais significativo do resultado

posição 131:

byte menos significativo do resultado

 

Exercício 2. Faça um programa que calcule an, onde a e n são números inteiros positivos de 8 bits e o resultado está expresso em 16 bits. Assuma a existência de uma subrotina que opera de acordo com o especificado no exercício 1. Observe o seguinte mapa de memória para as variáveis de entrada.

posição 128:

a

posição 129:

n

posição 130:

byte mais significativo do resultado

posição 131:

byte menos significativo do resultado

 

Exercício 3. Faça a subrotina “troca”, que lê os endereços de dois inteiros de 8 bits (posições 128 e 129), operando1 e operando2, e troca-os de posição. Use a posição 130 como variável auxiliar.

Situação inicial

Situação final

posição 128:

Endereço do operando1

posição 128:

Endereço do operando2

posição 129:

Endereço do operando2

posição 129:

Endereço do operando1

posição 130:

auxiliar

posição 130:

auxiliar

 

Exercício 4. Faça um programa que implemente o algoritmo bubble sort para ordenar valores armazenados em uma área contínua da memória. Assuma que a posição128 contém o endereço do início do conjunto de valores e que a posição 129 contém a quantidade de valores. Faça uso da subrotina “troca”, desenvolvida no exercício anterior.

posição 128:

início da área de dados

posição 129:

número de operandos

posição 130:

reservado para a subrotina troca

posição 131:

reservado para a subrotina troca

posição 132:

reservado para a subrotina troca

 

Comments