Assembler handles two constants differently. Internally, the value in the EAX register is stored in big-endian format. You can see this by writing:
mov eax, 1
If you check the register, you will see that its value is 0x00000001 .
When you tell the assembler that you want a constant value of 0x78ff5abc , this is exactly what is stored in the register. The high 8 bits of EAX will contain 0x78 , and the AL register will contain 0xbc .
Now, if you want to save the value from EAX into memory, it will be laid out in memory in the reverse order. That is, if you were to write:
mov [addr],eax
And then the checked memory in [addr], you will see 0xbc, 0x5a, 0xff, 0x78.
In the case of "WXYZ", the assembler assumes that you want to load a value so that if you were to write it to memory, it would be laid out as 0x57, 0x58, 0x59, 0x5a.
Take a look at the bytes of code that the assembler generates and you will see the difference. In the case of mov eax,0x78ff5abc you will see:
<opcodes for mov eax>, 0xbc, 0x5a, 0xff, 0x78
In the case of mov eax,WXYZ you will see:
<opcodes for mov eax>, 0x57, 0x58, 0x59, 0x5a