But i have done this swapping H/Drives from a dead machine to a working one and it works.
There are identifiers in the chipset of the motherboard which are recognized by Windows and are used in the boot process. If you take the hdd from the computer the operating system was install on and move it to another computer or another motherboard Windows will recognize the new identifiers and become confused by the additional identifiers.
If you have actually had this much success in swapping between motherboards you have been extraordinarily lucky that the operating system didn't immediate become corrupted and require being reinstalled. I would be willing to bet that you did have problems similar to what you are experiencing currently.
There is a safe way to do this with Windows 7 and 8, this is to use the sysprep command.
If you run sysprep on the hdd with Windows 7 or 8.1 before using it with another motherboard you should be be able to boot from it without any complications. You want to remove all hardware identifiers from the hdd, this generalizes the drive.
Click on the Start orb, then type cmd in the Search box.
cmd will appear under Programs above the search box, right click on it and choose Run as administrator.
This will open the Elevated Command Prompt.
In the Elevated Command Prompt type in CD C:\Windows\System32\Sysprep, then
use the command: "sysprep /generalize /oobe /shutdown"
Don't power the drive back on until it's in the other computer.