質問編集履歴

2

訂正

2020/01/31 07:22

投稿

kazuyakazuya
kazuyakazuya

スコア193

test CHANGED
File without changes
test CHANGED
@@ -8,13 +8,13 @@
8
8
 
9
9
  ```ここに言語を入力
10
10
 
11
- mov ax,[di + 16]
11
+ mov eax,[di + 16]
12
12
 
13
13
  ```
14
14
 
15
15
  の部分がよくわかりません。
16
16
 
17
- INT 15 ax = E820H を行うことによりメモリマップの情報をES:DIで表すアドレスの場所に
17
+ INT 15 eax = E820H を行うことによりメモリマップの情報をES:DIで表すアドレスの場所に
18
18
 
19
19
  保存する・・・ということをやっているはずです。
20
20
 

1

69い7h8い979

2020/01/31 07:22

投稿

kazuyakazuya
kazuyakazuya

スコア193

test CHANGED
File without changes
test CHANGED
@@ -1,75 +1,3 @@
1
- ![イメージ説明](7ecd931d4a7edf1676d5b667febed914.png)![イメージ説明](f87ea142a0ba65a9121358991644e3ba.png)![イメージ説明](add4ec3767ebd8c4ef71fba5686fdd26.png)![イメージ説明](5600e104816c04d18a2655f86fe083e4.png)![イメージ説明](216e6e96244cd3ff014a058993afe9ab.png)
2
-
3
-
4
-
5
- ```ここに言語を入力
6
-
7
- mov ax,[di + 16]
8
-
9
- ```
10
-
11
- の部分がよくわかりません。
12
-
13
- INT 15 ax = E820H を行うことによりメモリマップの情報をES:DIで表すアドレスの場所に
14
-
15
- 保存する・・・ということをやっているはずです。
16
-
17
- [Int 15/AX=E820h 返り値](http://www.ctyme.com/intr/rb-1741.htm)
18
-
19
-
20
-
21
- まず、diレジスタには何が入っているのか?
22
-
23
-
24
-
25
- mov di,.b0
26
-
27
-
28
-
29
- という命令がありました。.b0はラベルなのでどこかに定義されているだろうと探したのですが
30
-
31
- 定義されていませんでした。(見落としているだけ?)
32
-
33
-
34
-
35
- とりあえず、格納するアドレスの下位がdiに入っている。(リアルモードで実行する だから上位のESは16bit余計なので使わない たぶん)
36
-
37
-
38
-
39
- で、そこのアドレスには下記の情報が格納されるそうです。
40
-
41
- [リンク内容](http://caspar.hazymoon.jp/OpenBSD/arch/i386/stand/libsa/memprobe.html)
42
-
43
- ```ここに言語を入力
44
-
45
- 00h base address (下位ビット)
46
-
47
- 08h レングス(byte)
48
-
49
- 10h メモリマップタイプ (上位ビット)
50
-
51
- ```
52
-
53
- よって、よってDIが示すアドレスには・・・
54
-
55
- (リトルエンディアンだから高位ビットが下位アドレスに入る。)
56
-
57
- ``````ここに言語を入力
58
-
59
- ---DI---(アドレス下位)
60
-
61
-
62
-
63
- (アドレス位)
64
-
65
- ```
66
-
67
-
68
-
69
-
70
-
71
-
72
-
73
1
  INT 15によるメモリ情報取得をやっているのですがそれについて分からない点があるのでお願いします。
74
2
 
75
3