assembly ficha
Primeiros programas em Assembly
Com esta ficha vamos começar por fazer os nossos primeiros programas em assembly. Claro que para já farão apenas tarefas muito simples.
1.1. Escreva um programa com as seguintes características:
• Tenha 4variáveis inteiras declaradas em memória: “idade_1”, “idade_2”,
“copia_1" e "copia_2”;
• “idade_1” e “idade_2” deverão ser inicializadas com as idades dos elementos do grupo; • O programa deverá copiar os valores de “idade_1” e “idade_2” para “copia_1” e
“copia_2” respectivamente;
• Se necessitar de usar registos, use os registos do tipo $t;
• Não esquecer
a. De colocar a etiqueta “main”;
b. De terminar o programa com a chamada ao sistema apropriada (veja a página seguinte e copie as últimas duas linhas);
• Chame ao ficheiro “exercicio_01.s”
1.2. Carregue o programa. Provavelmente não conseguirá carregar o programa da primeira vez por causa de algum erro sintáctico (“parser error”). Nesse caso, verifique-o cuidadosamente:
• Estão as etiquetas bem escritas em todas as partes do programa? Na declaração, têm os dois pontos “:” a seguir?
• As directivas estão bem escritas? Estão precedidas por um ponto?
• As instruções estão bem escritas? Têm o número correcto de parâmetros?
• Não se esqueceu de um “$” do nome do registo?
• Etc…
1.3. Antes de correr o programa, verifique os valores em memória das suas variáveis e o conteúdo dos registos usados (olhando para as secções apropriadas da janela do simulador SPIM).
1.4. Corra o programa e veja as alterações produzidas, quer em memória, quer nos registos. 2. O que acha que faz o seguinte programa? Explique linha por linha.
var1: var2: var3: var4: .data
.word
.half
.byte
.byte
0x09
0x06,0x07
0x01,0x02,0x03,0x04
0xFF,0,0,0
.text main: lw lh lb
$t0,var1
$t1,var2
$t2,var3
lw lw $t3,var2
$t4,var3
li sw sh sb $t5,8
$t5,var1
$t5,var2
$t5,var3
li sw sw
$t6,9
$t6,var2
$t6,var3
la