Estoy desarrollando subrutinas en asm para manejar una memoria SD basandome en lo que se habla en el topic MMC Card : Hardware & Firmware del subforo de proyectos.
En un momento me surgio la necesidad de tener una subrutina capaz de multiplicar un numero de 23 bits x 512 para poder seleccionar el sector a escribir/leer en una targeta SD.
Despues de renegar con codigos que multiplicaban 2 numeros de 32 bits, comian muchisima ram y mucho tiempo de ejecucion me encontre con esta solucion universal creada por Nikolai Golovchenko:
http://www.piclist.com/techref/piclist/codegen/constdivmul.htmEn mi caso, para realizar esta multiplicacion de 23 bits x 512 tan solo me tarda 1.2uS a 20 mhz porque utiliza 6 instrucciones!
Toda una maravilla!
Espero que les sea de utilidad tanto como me fue a mi.