I am not an 8051 expert but there are some useful resources around. Try this **broken link removed**
16 bit data can represent unsigned numbers from 0 to 65535. 12 bit only covers 0 to 4095. So, you need to divide by 16 to convert them. A right shift moves every data bit along one place to the right and therefore divides the number by 2. Do that four times and you have divided by 16.
Ideally an 8051 expert would chip in here, but there seems to be no "shift" in the 8051, only rotate. In that case you use RRC - "rotate right through carry" but you need to watch out for the carry bit. In doing a 16 bit shift you shift the two 8 bit bytes in turn, using the carry bit to shift between the bytes. You need to be careful to clear the carry bit before you start otherwise you could end up with a 1 appearing in the most significant bit. Mind you, you could always just clear the MSbit afterwards.
Keith.