Atividade desafio: sistema para gerenciar listas ligadas ordenadas

Atualizado em 18 Ago-2015.
MC 404 - Prof. Célio

Escreva as seguintes rotinas, comentadas, em assembler do ARM, para gerenciar um sistema de listas ligadas ordenadas:
insere: inserir em ordem crescente numa lista ligada (inicialmente vazia) um valor inteiro de 32 bits com sinal, passado como parâmetro. Cada elemento dessa "lista de inteiros" contem: um inteiro de 32 bits e um apontador (32 bits) para o próximo elemento da lista.
Inicialize em tempo de montagem uma lista ligada de elementos livres, "free list", (com, digamos, 64 elementos). Na rotina insere, um elemento da "free list" deve ser retirado e seu espaço utilizado para o novo elemento da "lista de inteiros";
remove: remove um inteiro passado como parametro; se não estiver na lista, devolver -1 e 0 caso contrário. O elemento removido deve ser inserido no começo da lista "free list".
find: busca na lista um inteiro passado como parâmetro; devolve 0 se encontrado, -1 caso contrário.
Sugestões:
(i) dê nomes sugestivos aos registradores (por exemplo: headpt, freept, tmp, etc);
(ii) para testes, após cada inserção ou remoção exiba o conteúdo da lista;
(iii)teste o seu sistema inserindo os inteiros: 1,2,3,4,5,6,7,8 e depois removendo-os da lista na ordem da inserção; idem para 8,7,6,5,4,3,2,1 e 8,1,7,2,6,3,5,4.
(iv)faça um teste maior inserindo 32 inteiros aleatórios usando a função rand (para uma melhor vizualização, mascare o valor obtido deixando apenas os 5 bits menos significativos)