Fixed before I even got a chance to read it and find out what was wrong :-D
Without the extend operation, your sign will definately get trashed, since all you end up with is the same pattern of bits in the least significant half of your target register, turning a negative 16-bit 2's complement word value like -1 into the positive longword value 65535.