Last Update 2003/12/01
MS-DOS基本プログラミング集 6

X86プロテクトモード・プログラミング

大貫 広幸 著
B5変型判 320ページ
3.5"2DD FD付き
定価2,670円(税込)
JAN9784789835589
1995年4月1日発行
[絶版1998.2] X86プロテクトモード・プログラミング
大変恐縮ですが,こちらの商品は品切れ絶版となりました.

 本書は,PC9801およびIBM PC上で,MS-DOSからプロテクト・モードを利用するためのノウハウをすべて公開しました.したがって,プロテクト・モードとはどのような仕組みなのかがよくわかるでしょう.これからの,Windows時代に,どうしても知っておきたい知識と技術です.

目次

第1章 X86系 CPUのプロテクト・モードを活用するには
 1.1 リアル・モードとプロテクト・モード
 1.2 プロテクト・メモリを使うための手段
 1.3 ”MOVE BLOCK”BIOSやXMSによる拡張メモリのアクセスの限界
 1.4 プロテクト・モードへ切り替える方法の概略
 1.5 Windowsとプロテクト・モードのプログラム

第2章 IBM PCの拡張メモリのアクセス法
 2.1 IBM PCのINT 15Hの機能
 2.2 ブロック転送BIOSの処理内容
 2.3 アドレス・ライン A20のゲートについて
 2.4 ブロック転送BIOSを使用する上での注意事項
 2.5 C言語から”MOVE BLOCK”BIOSを使用する場合のプログラム

第3章 PC9801の拡張メモリのアクセス法
 3.1 PC9801シリーズのINT 1FHの機能
 3.2 ブロック転送BIOSの処理内容
 3.3 PC9801のアドレス・ライン A20のゲートについて
 3.4 C言語からPC9801のブロック転送BIOSを使用する場合のプログラム例

第4章 拡張メモリを使用するためのルール
 4.1 拡張メモリの管理
 4.2 拡張メモリの確保,解放の基本的な考え
 4.3 IBM PC/PS2の場合の拡張メモリの確保と管理
 4.4 PC9801の場合の拡張メモリの確保と管理

第5章 XMSドライバを使った拡張メモリの活用法
 5.1 XMSが管理するメモリの種類
 5.2 XMSのファンクションと呼び出し方法
 5.3 ドライバ情報ファンクション・グループ
 5.4 HMA管理ファンクション・グループ
 5.5 A20管理ファンクション・グループ
 5.6 拡張メモリ管理ファンクション・グループ
 5.7 上位メモリ管理ファンクション・グループ

第6章 HIMEM.SYS,EMM386.EXEの機能とプログラミング
 6.1 HIMEM.SYSとBIOSレベルの拡張メモリの使用について
 6.2 HIMEM.SYSとEMM386.EXE
 6.3 XMSを使用したC言語のプログラム例

第7章 MS-DOS Ver5.0のメモリ管理機能
 7.1 MS-DOS Ver5.0のメモリ管理の概要
 7.2 MS-DOS Ver5.0の問題点
 7.3 デバイス・ドライバをUMBにロードする場合の注意
 7.4 XMSとMS-DOS Ver5.0の関係
 7.5 MS-DOS Ver5.0の新しいファンクション・リクエストの機能

第8章 プログラミングに不可欠なプロテクト・モードの基礎知識
 8.1 CPUによる動作モードや機種の違いについて
 8.2 リアル・モードとプロテクト・モードの違い
 8.3 リアル・モード・プロテクト・モードのCPUモードの切り替え
 8.4 ディスクリプタの構造と種類
 8.5 ゲート・ディスクリプタ
 8.6  ディスクリプタ・テーブル
 8.7 セレクタの構造
 8.8 プロテクト・モードの保護機能
 8.9 プロテクト・モードのタスク管理とタスク・スイッチング
 8.10 ページング機能
 8.11 仮想86モード

第9章 リアル・モードとプロテクト・モードを切り替える方法
 9.1 リアル・モードからプロテクト・モードへの切り替え時のレジスタの初期化
 9.2 数値演算コプロセッサのリアル・モードからプロテクト・モードへの切り替え
 9.3 リアル・モードからプロテクト・モードへの切り替えに伴うI/Oの操作
 9.4 プロテクト・モード時にプログラムを実行する場合の注意
 9.5 386CPUの場合のリアル・モードへの戻り方
 9.6 80286CPUを搭載したIBM PC/PS2のシャットダウン
 9.7 80286を搭載したPC9801のシャットダウン

第10章 MS-DOSでプロテクト・モードを活用するプログラムのつくり方
10.1 アセンブラとCPUの動作モード
10.2 リアル,プロテクト両ルーチンが混在する場合のコーディング上の工夫
10.3 作成するプログラムの概要
10.4 リスト上のモード切り替えサブルーチンの応用
10.5 386による64Kバイト以上のエリアの確保とアクセス
10.6 386のデフォルト32ビットのコード・セグメント
10.7 プロテクト・モードで実行されるプログラムをプロテクト・メモリに配置する方法
10.8 プロテクト・モードで実行されるルーチンで割り込みを処理する方法

第11章 VCPIの位置付けとVCPIファンクションの使い方
11.1 PC9801のMS-DOS ver5.0でVCPIを使うための方法
11.2 各種のプロテクト・メモリの管理方法とVCPIの位置付け
11.3 VCPIサーバの機能とVCPIクライアント
11.4 VCPIのファンクションの詳細
11.5 VCPIのファンクションの動作を調べるためのプログラム
11.6 VCPIを利用してプログラムの一部をプロテクト・モードで実行するプログラムの作成

第12章 DPMIの仕様とその使い方
12.1 DPMIの概要
12.2 DPMIのホストとクライアントの関係

第13章 DPMIのファンクション
13.1 DPMIホストの使用を開始するための処理
13.2 リアル・モードへ戻り DPMIホストの使用を終了させる処理
13.3 モードの検出(Mode DeteCtion)
13.4 LDTディスクリプタ管理サービス
13.5 LDTディスクリプタの割り当て(ファンクション0000h)と
    次のセレクタへの増分値の取得(ファンクション0003h)
13.6 LDTディスクリプタの解放(ファンクション0001h)
13.7 セグメントをディスクリプタに変換(ファンクション0002h)
13.8 セグメント・ベース・アドレスの取得(ファンクション0006h)
13.9 セグメント・ベース・アドレスの設定(ファンクション0007h)
13.10 セグメント・リミットの設定(ファンクション0008h)
13.11 ディスクリプタのアクセス権の設定(ファンクション0009h)
13.12 コード・セグメントのエイリアス・ディスクリプタの作成
    (ファンクション000Ah)
13.13 ディスクリプタの取得(ファンクション000Bh)と
    ディスクリプタの設定(ファンクション000Ch)
13.14 特定のディスクリプタを割り当てる(ファンクション000Dh)
13.15 DOSメモリ管理サービス(DOS Memory Management Services)
13.16 DOSメモリ・ブロックの割り当て(ファンクション0100h)
13.17 DOSメモリ・ブロックの解放(ファンクション0101h)
13.18 DOSメモリ・ブロックのサイズ変更(ファンクション0102h)
13.19 割り込みサービス(Interrupt Services)とDPMIの割り込み処理
13.20 リアル・モード割り込みとプロテクト・モード割り込み
13.21 プロテクト・モードの例外処理
13.22 リアル・モード側で発生したソフトウェア割り込みにより
    プロテクト・モード側のハンドラを呼び出す
13.23 変換サービス(TranslationServiCes)
13.24 プロテクト・モード側のルーチンからリアル・モード側のルーチン
    (割り込みおよび手続き)を呼び出す
13.25 コールバック手続きの使用方法
13.26 ロー(RAW)モードにおけるプロテクト・モードとリアル・モードの切り替え
13.27 バージョン取得(Get VeRSion)
13.28 メモリ管理サービス(Memory Management ServiCes)
13.29 空きメモリの情報を取得する(ファンクション0500h
13.30 メモリ・ブロックの割り当て(ファンクション0501h)
13.31 メモリ・ブロックの解放(ファンクション0502h)
13.32 メモリ・ブロックのサイズ変更(ファンクション0503h)
13.33 ページ・ロッキング・サービス(Page LoCking ServiCes)
13.34 リニア領域をロックする(ファンクション0600h)
13.35 リニア領域をアンロックする(ファンクション0601h)
13.36 リアル・モード領域をページング可能にする(ファンクション0602h)
13.37 リアル・モード領域を再ロックする(ファンクション0603h)
13.38 ページ・サイズを取得する(ファンクション0604h)
13.39 デマンド・ページング性能調整サービス
(Demand Paging PerformanCe Tuning ServiCes)
13.40 ページをページングの候補に指定する(ファンクション0702h)
13.41 ページの内容を放棄する(ファンクション0703h)
13.42 物理アドレスの配置(Physical Address Mapping)
13.43 仮想割り込み状態ファンクション(Virtual Interrupt State Functions)
13.44 ベンダ固有APIエントリの取得(Get Vendor Specific API Entry Point)
13.45 デバッグ・レジスタのサポート(Debug Register Support)
13.46 デバッグ・レジスタをサポートするファンクションの使い方
13.47 DPMIを利用したリアル/プロテクト混在のプログラムの作成上の注意
13.48 CPUの動作モードの違いとセグメントの指定に注意
13.49 コード・セグメントのデフォルトのビット長には注意
13.50 クライアントを終了する場合の注意