http://www.ic.unicamp.br/~celio/mc404-2012/armexemplos/Readme.html

Ordem sugerida para leitura/teste dos exemplos:
1. hello.s	- o programa clássico "Hello World!"
2. hellothumb.s	- versão com código thumb do "Hello World!"
3. subr.s	- exemplo com subrotinas
3.1 powerof2.s	- verifica se inteiro é uma potencia de 2
4. copystr.s	- copia cadeia de caracteres usando indexação
5. wordcopy.s	- copia palavras de 32 bits usando indexação
6. ex1.s	- exemplo de leitura de numeros pelo teclado via função scanf
7. blockcopy.s  - copia blocos de palavras
8. jumtbl.s	- exemplo de uma tabela de saltos para subrotinas
9. div10.s	- divide inteiro de 32 bits sem sinal por 10 via multiplicação e shifts:
		- "constante mágica" obtida do código gerado por gcc da versão em C (tdiv.c)
10. udiv10.s	- variante de div10.s usando constante mágica obtida no manual
		- "ARM Programming Techniques" p 5-12 - obtem quociente e resto
11. div.s	- divisão (via subtrações sucessivas) de inteiros sem sinal de 31 bits em tempo 
		- logaritmico: explora o recurso de "execução condicional" do ARM
12. ndiv.s	- versão melhorada de div.s: divide inteiros sem sinal de 32 bits,
		- usa a instrução CLZ para cortar pela metade as iterações de div.s
13. strcopy-a.s e copy.s - exemplo de uso de módulos compilados separadamente
14. tdiv.c	- teste para obter via gcc a "constante mágica" para dividir por 10
15. tdiv.lst	- codigo assembler gerado pela compilação de tdiv.c:
		- gcc -c -g -Wa,-a,-ad tdiv.c > tdiv.lst
16. div.c	- do manual citado em 10, gera o código em assembler para divisão de
		- inteiros via somas, subtrações e shifts quando o divisor é do tipo 2**n +- 2**m