Just SCALE everything up so there are NO decimals to get in the way.... for a start, why are you dividing by 1000? Lose it and save some bytes...

Your example...

Addrsm = 40832
Chipselect is = 2

memperc=Addrsm/128 (answer will be 319 - memperc is a WORD of course)
If Chipselect=2 then memperc=memperc+500

You don't need to deal with calculating all of 100% of memory, just calculate the lower 50% block or the upper 50% block, and in the case of the upper block just add 50% to get the final answer. Then to display...

LCDOut "Memory="
If memperc>999 then LCDOut #memperc DIG 3
If memperc>99 then LCDOut #memperc DIG 2
LCDOut #memperc DIG 1,".",#memperc DIG 0,"%"

Your display should show "Memory=81.9%" with leading zeros surpressed.