This IS on James web page. Or a should say that there's a variation that's nearly identical. But as everyone knows, this isn't the fastest algorithm. ;). However, you're on a good roll Martin and I wouldn't want to spoil your fun. (The truth be told, I don't have time to explain it...) Scott On Thu, 6 Apr 2000, [iso-8859-1] Martin Schäfer wrote: > Thank you, James, > > now I found an 8x8 multiply from Andrew Warren. After eliminating the loop > I think the following procedure is the fastest and not very long: > > If anyone has a better one: I'm interested. > > Martin > > > > ;*************************************************************************** > **** > ;** time efficient multiplication 8 bit x 8 bit = 16 bit (unsigned) > ;** > ;** company: elektronik 21 GmbH > ;** programmer: Martin Schaefer (idea from Andrew Warren) > ;** > ;** execution time: fixed 38 cycles (with jump in and jump out) !!! > ;** code length: 35 words > ;** multiplier: w > ;** multiplicand: resultlo > ;** result: resulthi:resultlo > ;*************************************************************************** > **** > MUL8X8 CODE > Mul8x8 ;* 2 cycles for call - instruction > GLOBAL Mul8x8, resulthi, resultlo > > mult MACRO > btfsc STATUS,C > addwf resulthi,F > rrf resulthi,F > rrf resultlo,F > ENDM > > clrf resulthi ;* 1 cycle > rrf resultlo,F ;* 1 cycle > > mult ;* 4 cycles > mult ;* 4 cycles > mult ;* 4 cycles > mult ;* 4 cycles > mult ;* 4 cycles > mult ;* 4 cycles > mult ;* 4 cycles > mult ;* 4 cycles > > retlw 0 ;* 2 cycles > ;*************************************************************************** > **** >