保護にリアルモード32ビット・アドレッシング・モードによって行わ

動作させるために、メーカーの設計CPU 32ビットアドレスバスまで、このモードでは、モードの保護でリアルモードアドレスバス20、約1Mへのメモリアクセス、より多くのメモリのCPU、アクセスので、メモリが大幅に増加しました。

アドレッシング32ビットを使用GDTと呼ばれるものを動作させるための保護モード、グローバル記述子テーブルと呼ばれるこのGDT(グローバル記述子テーブル)。それの私の理解では、それは、それぞれがメモリ内のセグメントと、このセグメントの先頭アドレスの大きさを保って、ディレクトリのようなものであるということです。

このセグメントは、その後、彼はメモリのセグメントであり、それに名前を付け、メモリ内の小片を選択するように理解されるであろう。

この図は、より良い、以下に説明します

もちろん、メモリ位置にGDTの範囲内で、確かにリアルモードでアクセスできるようになります。

あなたは、セグメントアクセスGDTの最初のエントリにセグメントにアクセスするために、より大きなアドレスにアクセスし、その後、彼の実際の物理アドレスを取得したい場合は、32ビットバスアクセスには、保護モードを起動します。

move ax [0x5a1]

のはもちろん、最初のベースアドレスレジスタが0に設定されている、あなたはリアルモードメモリは0x5a1場所斧がライン上のトップアセンブリ文でそれを登録したデータを読みたいとしましょう。

 

あなたはメモリ位置にアクセスしたい場合は、この方法でデータ5Mはない仕事、この時間は、次のコードを使用するようにします

[SECTION .gdt]
 ;                                  段基址          段界限                属性
LABEL_GDT:          Descriptor        0,            0,                   0  
LABEL_DESC_CODE32:  Descriptor        0,      SegCode32Len - 1,       DA_C + DA_32
LABEL_DESC_VIDEO:   Descriptor     0B8000h,         0ffffh,           DA_DRW
LABEL_DESC_5M:      Descriptor     0500000h,        0ffffh,           DA_DRW

GdtLen     equ    $ - LABEL_GDT
GdtPtr     dw     GdtLen - 1
           dd     0

SelectorCode32    equ   LABEL_DESC_CODE32 -  LABEL_GDT
SelectorVideo     equ   LABEL_DESC_VIDEO  -  LABEL_GDT
Selector5M        equ   LABEL_DESC_5M - LABEL_GDT
mov   bx, Selector5M    ;用 es 指向5M内存描述符
mov   es, bx
mov   edi, 0
mov   ax, [es:edi]

コードの最初のブロックは、サイズ0FFFFH、LABEL_DESC_5Mと呼ばれる名前のセグメントメモリ5Mの位置に、このテーブルでは、GDTのために書かれています。私はまた、我々は気にしてはならない、他のセグメントの数を書きました。

第二は、第がある、LABEL_DESC_5M Selector5Mこのセクションでは、このテーブルが少ないGDT対応するコードブロックの使用です。レジスタBXレジスタを介して、それを渡すエス。このレジスタは、特にESは、テーブルエントリのGDTの真ん中に来ています。EDIレーン5Mアクセス5MのEDIセット場合は0に、値がこの位置に相対的であるこの位置をオフセットし、セット1にゼロバイト次いで5MアクセスEDI場合など、当然のことながら、最大セグメントを超えることはできません範囲。そして、最後の文は5Mは、それらを斧書き込みデータの位置です。

MOV斧は[0x500000]は、もちろん、これが実行されていないこと、次にリアルモードメモリアクセス5Mの使用方法は、レジスタとバスをサポートしていない場合は、考えてみましょう。

MOV斧、[ES:EDI]この文は、MOV斧とみなすことができる[0x500000 + 0]、彼はこのために実行することができました[ES:EDI]保護モードをトリガし、ESに取り組むべきであるそれから開始しますGDT保護モードは、メモリのアクセスより多くの量を読んで、この実装は、ハードウェア実装です。

以下の表にまとめました

公開された24元の記事 ウォンの賞賛9 ビュー10000 +

おすすめ

転載: blog.csdn.net/qq_42794321/article/details/104904047