This isn't going to work. There might be errors elsewhere, but this isn't going to work.EclipseOS wrote: [ORG 0x10000]
[BITS 32]
...
mov eax, cr0
xor eax, 1
mov cr0, eax
...
jmp word 0x00:real_mode
...
[BITS 16]
real_mode:
The assembler can't take your 32-bit org statement and intelligently create a 16 bit label for a long jump using it. Second problem is that you've turned the PE bit back on. Third problem is that you've shown us nothing to say that 0x0 is actually a 16-bit code descriptor (Which you'll need for the switch back).