In C this is easy if you do not have a problem with codesize ...
In assembler this will not be sooo easy.
In Assembler you could work like this:
shift your two bytes number (that you want to multiply by 4095) 4 bits to the left (which is a multiplication by 16) now you have a three bytes result. Now add a fourth byte 0x00 byte to your three bytes (you would have to shift your number 8 bits to the left which can be eliminated by just adding another 0x00 byte to the end of your result) which gives you a 4 bytes result (your original number multuplied by 4096) next subtract your original number, now you have an intermediate result (your original number multiplied by 4095).