質問編集履歴
2
訂正
title
CHANGED
File without changes
|
body
CHANGED
@@ -3,10 +3,10 @@
|
|
3
3
|

|
4
4
|
[リンク内容](https://gihyo.jp/book/2019/978-4-297-10847-2)
|
5
5
|
```ここに言語を入力
|
6
|
-
mov
|
6
|
+
mov eax,[di + 16]
|
7
7
|
```
|
8
8
|
の部分がよくわかりません。
|
9
|
-
INT 15
|
9
|
+
INT 15 eax = E820H を行うことによりメモリマップの情報をES:DIで表すアドレスの場所に
|
10
10
|
保存する・・・ということをやっているはずです。
|
11
11
|
[Int 15/AX=E820h 返り値](http://www.ctyme.com/intr/rb-1741.htm)
|
12
12
|
|
1
69い7h8い979
title
CHANGED
File without changes
|
body
CHANGED
@@ -1,39 +1,3 @@
|
|
1
|
-

|
2
|
-
|
3
|
-
```ここに言語を入力
|
4
|
-
mov ax,[di + 16]
|
5
|
-
```
|
6
|
-
の部分がよくわかりません。
|
7
|
-
INT 15 ax = E820H を行うことによりメモリマップの情報をES:DIで表すアドレスの場所に
|
8
|
-
保存する・・・ということをやっているはずです。
|
9
|
-
[Int 15/AX=E820h 返り値](http://www.ctyme.com/intr/rb-1741.htm)
|
10
|
-
|
11
|
-
まず、diレジスタには何が入っているのか?
|
12
|
-
|
13
|
-
mov di,.b0
|
14
|
-
|
15
|
-
という命令がありました。.b0はラベルなのでどこかに定義されているだろうと探したのですが
|
16
|
-
定義されていませんでした。(見落としているだけ?)
|
17
|
-
|
18
|
-
とりあえず、格納するアドレスの下位がdiに入っている。(リアルモードで実行する だから上位のESは16bit余計なので使わない たぶん)
|
19
|
-
|
20
|
-
で、そこのアドレスには下記の情報が格納されるそうです。
|
21
|
-
[リンク内容](http://caspar.hazymoon.jp/OpenBSD/arch/i386/stand/libsa/memprobe.html)
|
22
|
-
```ここに言語を入力
|
23
|
-
00h base address (下位ビット)
|
24
|
-
08h レングス(byte)
|
25
|
-
10h メモリマップタイプ (上位ビット)
|
26
|
-
```
|
27
|
-
よって、よってDIが示すアドレスには・・・
|
28
|
-
(リトルエンディアンだから高位ビットが下位アドレスに入る。)
|
29
|
-
``````ここに言語を入力
|
30
|
-
---DI---(アドレス下位)
|
31
|
-
|
32
|
-
(アドレス位)
|
33
|
-
```
|
34
|
-
|
35
|
-
|
36
|
-
|
37
1
|
INT 15によるメモリ情報取得をやっているのですがそれについて分からない点があるのでお願いします。
|
38
2
|
|
39
3
|

|