I know I succeed in writing my code to that address using int 13h
because I can see it at that memory location. What I can't do is jump there.
I put 0x1000
(three zeros there) into es
and 0x0000
into bx
and I know that [es:bx]
means the address calculated by (es * 0x10) + bx
which does equal 0x10000
(four zeros there). But eip
, the instruction pointer, never does go there.
I've tried jmp [es:bx]
, jmp 0x1000:0x0000
, and a bunch of other permutations that NASM
doesn't even accept.
My boot loader as it currently is (which still isn't working) is here. I booted it up in Qemu and did a memsave on the first 50 bytes at 0x10000
, opened it up with tweak, and saw my "kernel" code there (simple . But EIP
still refuses to be 0x10000
, or reach it and then hang where I want it, is what I mean). Full images of the situation here