This seems a lot harder than I initially thought. There doesn't seem to be any other way I can think of to get the first four bits from register1, into the last 4 bits of register0 by shifting register1 to the left 4 bits.

Code:

BEFORE:
a0 a1 a2 a3 a4 a5 a6 a7 a8 a9 a10 a11 a12 a13 a14 a15 => register0
b0 b1 b2 b3 b4 b5 b6 b7 b8 b9 b10 b11 b12 b13 b14 b15 => register1
AFTER:
0 0 0 0 0 0 0 0 0 0 0 0 b0, b1, b2, b3 => register0 (it's been zero'd out)
b4 b5 b6 b7 b8 b9 b10 b11 b12 b13 b14 b15 0 0 0 0 => register1
The only method I can think of, is by using a mask of xF000 and using an "AND" operation on the original register1 to get:
register1
AND mask
------------
new value (which needs to be bit shifted right and stored in register0 )
Result:
b0, b1, b2, b3 0 0 0 0 0 0 0 0 0 0 0 0 => register0
b4 b5 b6 b7 b8 b9 b10 b11 b12 b13 b14 b15 0 0 0 0 => register1
Now what...?

Then i'm stuck as to how to properly get the final result for register0 that I need.