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:

alt text
(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