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 |