PIC Microcontroller Math Method

Scale 8 bits to a percent

Jason Harper says:

Assuming that code space is also a concern, try this: it's a bit shorter than the other solutions I've seen posted. Note that it actually calculates input * 102 / 256, but due to roundoff errors it produces 100 for an input of 255, so it should do the job for you.
percentify
; input in W, output in temp
        movwf temp
        bcf status,c
        rrf temp,f              ;temp = input * 128 / 256
        addwf temp,f            ;carry/temp = input * 384 / 256
        rrf temp,f              ;temp = input * 192 / 256
        bcf status,c
        rrf temp,f              ;temp = input * 96 / 256
        swapf temp,w
        andlw 0x0F              ;w = input * 6 / 256
        addwf temp,f            ;temp = input * 102 / 256
;or:    addwf temp,w     for result in w
        return