From http://www.myke.com/basic.htm
Sometimes you have to do a fast multiply on a register value with a constant. in 16 Bit Operations and Macros, I go through a number of methods, but I use the following Macro for this purpose for a single byte:FastMul Macro Register, Constant variable i = Constant clrw ; Put the Product in "w" while (i != 0) if ((i & 1) != 0) addwf Register, w ; Add the Current Contents of "Register" to "w" endif bcf STATUS, C ; Shift up the Register's Contents rlf Register, f i = i / 2 ; Shift down the counter value endw endm
Comments: