SX 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
	mov	temp, W
	clrb	C
	rr	temp	;temp = input * 128 / 256
	add	temp, W	;carry/temp = input * 384 / 256
	rr	temp	;temp = input * 192 / 256
	clrb	C
	rr	temp	;temp = input * 96 / 256
	mov	W, <>temp
	and	W, #$0F	;w = input * 6 / 256
	add	temp, W	;temp = input * 102 / 256
;or:	add	temp, W
	ret