1.1 物理メモリアクセス(プログラムの実行)

1-1-4  プログラムの実行とカスタマイズ

 プログラムの実行方法は,MD.EXEをクリックします.画面が壊れると思います.しかし,Windowsには多くのビデオカードがあるため,必ず画面に変化が現れるとは限りません.プログラムが物理メモリにアクセスしているため,ビデオカードの仕様が異なると発生する現象も異なってくるためです.変化が生じないときは,画面を標準VGA(640×480,16色)にしてみてください.

 さて,先ほど中断していた_A000hはどこにあるのでしょう.実はこれは,カーネルにあります.いくつかのセレクタがカーネルで用意されています.

 どんなセレクタがカーネルにあるのか見をつけるには,EXEHDR.EXEでKRNL386.EXEをダンプします.使用中のWindowsのKRNL386.EXEをEXEHDR.EXEにかけてみたところ,以下のようなセレクタが見つかりました.Windows 95でもWindows 98でも同じセレクタが用意されています.特に,セグメント0040hのセレクタが用意されているので,いたずらや実用的なプログラムが作れると思います.

 0000 __0000H exported
 0040 __0040H exported
 a000 __A000h exported
 b000 __B000H exported
 c000 __C000H exported
 b800 __B800H exported
 d000 __D000H exported
 e000 __E000H exported
 f000 __F000H exported

 なかなか面白い実験ではなかったでしょうか.小さなプログラムですが,Windowsがどんな物かよくわかります.簡単なドライバを作ることも可能です.

 メモリマップトI/Oを使えば速度の低下も発生しないので,簡単なドライバを作るのは簡単です.自分の目的に合わせて変更し,面白いプログラムを作ってください.

1-1-5  コンパイル環境と実行環境

 コンパイル環境と実行環境を表1-2に示します.

<表1-2> 実行環境

  Windows95 Windows98 WindowsNT4.0 Windows2000
コンパイル *1 *1 × ×

実行

*2 *2 × ×


*1: 16ビットコンパイラ.たとえば,VisualC++1.51など

*2: DOS/Vマシン.ただし,VRAMのアドレスを書き換えれば他機種でも動作する



Copyright 2000 北山 洋幸

目次のページに戻る
新刊のご案内


Copyright 1997-2001 CQ Publishing Co.,Ltd.