int 13h
そのメモリ位置でコードを確認できるため、を使用してそのアドレスにコードを書き込むことに成功したことはわかっています。私ができないのはそこにジャンプすることです。
私は0x1000
(そこに3つのゼロ)を入れes
て0x0000
入れました、そしてそれはそれによって計算されたアドレスが等しい(そこに4つのゼロ)ことを意味するbx
ことを知っています。しかし、命令ポインタは決してそこに行きません。[es:bx]
(es * 0x10) + bx
0x10000
eip
私は、、、および受け入れさえしない他の多くjmp [es:bx]
のjmp 0x1000:0x0000
順列を試しました。NASM
現在の私のブートローダー(まだ機能していません)はここにあります。私はそれをQemuで起動し、最初の50バイトでmemsaveを実行し、0x10000
微調整して開き、そこで私の「カーネル」コードを確認しました(単純です。しかし、EIP
それでも拒否するか0x10000
、到達してから、必要な場所にハングアップします。 、私が言っていることです)。ここに状況の完全な画像