O programa seguinte transforma uma string de caracteres numa nova string em que as letras minúsculas são substituídas pelas maiúsculas correspondentes.
Em C:
void toUpper(char*
str){
char *s = str;
while(*s != 0){
if(*s >= 97 &&
*s <= 122)
*s = *s - 32;
s++;
}
}
Em assembly para a arquitectura implementada no trabalho prático:
1 | add | $1 | $0 | $0 | % $1 = 0 |
2 | addi | $2 | $0 | 97 | % $2 = 97 |
3 | addi | $3 | $0 | 122 | % $3 = 122 |
4 | lw | $4 | $1 | 64 | % $4 = valor na posição da memória (64 + $1) |
5 | beq | $4 | $0 | 6 | % Se $4 == $0 então PC = PC + 1 + 6 |
6 | blt | $4 | $2 | 3 | % Se $4 < 97 então PC = PC + 1 + 3 |
7 | bgt | $4 | $3 | 2 | % Se $4 > 122 então PC = PC + 1 + 2 |
8 | addi | $4 | $4 | -32 | % Subtrai 32 ao valor em $4 |
9 | sw | $4 | $1 | 64 | % Guarda o valor em $4 na posição de memória (64 + $1) |
10 | addi | $1 | $1 | 1 | % $1 = $1 + 1 |
12 | j | 4 | % PC = 4 | ||
13 | sys | 0 | % Fim de execução |