実験でフロッピーディスクにアセンブリ言語でプログラムを作ってブートストラップデータ領域で実行してみたんですが・・・
[org 0]
[bits 16]
jmp 0x07c0:start
start:
mov ax, cs
mov ds, ax
mov ax, 0xB800 mov es, ax .........(略)
このようにしてプログラムを作って見ました。
プログラムは成功しています。
これを逆アセンブルしてみると
00000000 EA0500C007 jmp word 0x7c0:0x5
00000005 8CC8 mov ax,cs
00000007 8ED8 mov ds,ax
00000009 B800B8 mov ax,0xb800
0000000C 8EC0 mov es,ax
.........(略)
となったわけなんですが・・・
この一番左側にあるのは 00000000 00000005というのは仮想メモリのアドレスですか??
リアルモードで動いているので、仮想メモリはないですよね??
でしたらこの左のアドレスのようなものはなんですか??
物理メモリのアドレスではないはずですが・・・
最初の命令が一番謎で・・・
jmp 0x7c0:start は 0x7c0 ⇨ 0x5(start)にジャンプしているわけですよね??
0x07c0は物理メモリ上ですよね??
この0x5はメモリ上の番地ですか??
物理メモリ上でも、仮想メモリでもないのでしたらこの0x5はどこにあるのですか??
どうやってジャンプしているのでしょう??
回答1件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2016/08/25 23:38
2016/08/25 23:51
2016/08/26 04:31
2016/08/26 04:32
2016/08/27 03:49
2016/08/27 05:48
2016/08/27 08:17