I always get confused over this one.

I am pretty sure that a 32-bit CPU's instruction word length is 4 bytes

Therefore, I would expect a 4-byte data variable to be referred to as a word.

However, (maybe there is some history here from Windows) it always seems to be called a DWord. In ASM code too I see things like
Code:
mov dword ptr xxx
So, can anyone help me out here? For once and for all, what is a word, and what therefore is a DWord, in general computing, and assembly language? Ignoring completely the Win32 API.