The problem is that hdds installed with a Windows operating system recognize identifiers in the chipset of the motherboard when it is booted the first time. These identifiers are recognized each time the computer is started. When you take a hdd which has had a Windows operating system installed and move it to another computer or change the motherboard the operating system will see the new identifiers and basically become confused. This can result is the operating system not being able to boot. If it does boot there is a very good chance that it will begin to deteriorate and eventually fail.
If you are running Windows 7 or Windows 8.1 there is a way to get around this problem.
If you run sysprep on the hdd with Windows 7 or 8.1 before moving it you should be be able to move it and boot from it on the other computer. 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.
Note: You'll want to install matching chipset drivers, video drivers, etc.. after moving the drive.