Is it possible to run x86 assembly on a x64 operating system?
Yes, of course. Most programs are still 32 bit and run fine on 64-bit Windows systems. Those programs are machine language, which has a one-to-one mapping with assembly (and can be easily disassembled into x86 assembly code).
Is it possible to work with x86 assembly on a x64 operating system? Will it run properly in the emulator?
Yes it is possible & it will run properly. Instruction Set Architecture is always backwards compatible.
Registers in x86-64:
(source: usenix.org)
For example:
Here you can see that rax
is the new 64 General Purpose register but you still can use eax
as it refers to lower 32 bits of rax
.
Or should I learn x64 assembly?
x86-32 architecture is subset of x86-64. Its like first you learnt x86 then go & find whats new in x86-64 assembly. Once you learn x86 asm. Then this will be a useful resource: http://www.cs.cmu.edu/~fp/courses/15213-s06/misc/asm64-handout.pdf