hola a todos, el problema con tu rutina no era que no entendiese entre enteros con o sin signo, solo que la instruccion ensablador que usabas no diferenciaba de entero o fractional, hice la simulacion y no lo consegui, use la multiplicacion MPY y lo carge en el Acumulador A, para luego sacarlo fuera de la funcion en ensablador, y si logre la multiplicacion en flotante que tanto me costo, seguramente tengo algo mal definido y la instruccion MUL solo entendia de enteros.
Pongo aqui la rutina que es basicamente la tuya.
.global _multfractional
_multfractional
PUSH CORCON
MOV #0x0010,W3
MOV W3,CORCON
MOV W0,W4
MOV W1, W5
MPY W4*W5,A
SAC A,W0
POP CORCON
return
.end
Un saludo desde Malaga.
P.D: El filtro FIR con enteros y usando long para guardar el resultado con el posterior desplazamiento va de escandalo, pero para un filtro IIR donde los coeficientes ya no son todos del mismo orden necesitaba hacerlo en fractional para que todos los numeros sean menores que uno, y tampoco me servia usar flotantes puesto que con tres multiplicaciones en flotante, el paso de muestras entre el codec y el dspic a traves del bus SPI se me dejaba de funcionar.
Cuando acabe todo el proyecto no tengo problemas en mandar info a quien este interesado.