トップ->アセンブラ 第2章

あなたは

人目のアセンブラの受講生です。

アセンブラ入門内検索

目次

アセンブラ入門

アセンブラ 〜MS-DOSの世界〜 トップ
0. はじめに

1. コマンドラインからの引数
   1. コマンドラインからの引数
   2. 自分の名前は?

2. メモリー管理
   1. 環境変数
   2. 練習問題
   3. メモリーの割り当て
   4. メモリーの解放
   5. UMB
   6. メモリー管理
   7. 常駐プログラム(TSR)

3. 標準入出力
   1. 1文字入力
   2. キーボードバッファー
   3. 1文字出力
   4. 文字列出力
   5. 文字列入力
   6. 練習問題
   7. RS-232C
   8. プリンタ

4. ファイル操作
   1. ファイルオープン
   2. ファイルクローズ
   3. ファイルリード
   4. ファイルライト
   5. 練習問題1
   6. ファイルポインタの移動
   7. 練習問題2
   8. ファイル作成
   9. ファイル属性
   10. ファイル削除
   11. ファイル名変更
   12. ファイル属性の設定・取得
   13. ファイル日時の設定・取得
   14. ファイル検索
   15. 練習問題3
   16. 予約されているファイルハンドル
   17. ファイルハンドルの二重化(リダイレクト)

5. ディレクトリ操作
   1. ディレクトリ操作
   2. カレントディレクトリ変更
   3. カレントディレクトリ取得
   4. ディレクトリ作成
   5. ディレクトリ削除
   6. 練習問題

6. ディスク操作
   1. ディスクのリセット
   2. カレントディスクの取得
   3. カレントディスクの変更
   4. ドライブ情報の取得
   5. 空き容量取得
   6. 練習問題
   7. 交換可能ドライブの検査
   8. リトライ回数の設定
   9. ディスクの直接操作

7. プロセス管理
   1. プログラムの実行
   2. 練習問題
   3. プログラム終了
   4. リターンコード
   5. PSPアドレスの取得・設定
   6. DTAアドレスの取得・設定
   7. プログラムの実行2
   8. 練習問題2

8. その他のシステムコール
   1. 日付の取得・設定
   2. 時間の取得・設定
   3. 割り込みベクタの設定・取得
   4. ベリファイフラグ
   5. MS-DOSのバージョン取得
   6. 国別情報の取得・設定
   7. CTRL + Cの検査
   8. CTRL + Cの処理

9. EMS
   1. EMSとは
   2. EMSを使用するには
   3. EMSが使用可能か?
   4. EMSのバージョン取得
   5. ページフレームのアドレス取得
   6. 未使用ページ数の取得
   7. アロケート、デアロケート
   8. マップ、アンマップ
   9. ページマップのセーブ、リストア
   10. ハンドル数の取得
   11. ハンドルページの取得
   12. 再アロケート
   13. ハンドル名
   14. その他

10. XMS
   1. XMSとは
   2. XMS使用法
   3. XMSバージョンの取得
   4. HMAとは
   5. HMAの割り当て・解放
   6. A20ラインの設定
   7. EMBとは
   8. EMBの空き容量取得
   9. EMBの割り当て・解放
   10. EMBのコピー
   11. EMBのロック・アンロック
   12. EMBハンドル情報取得
   13. EMBの再割り当て
   14. UMBの割り当て・解放

11. エスケープシーケンス
   1. エスケープシーケンスとは
   2. エスケープシーケンス表

12. 終わりに


・ このページの先頭に戻る
・ トップページに戻る



・ このページの先頭に戻る
・ トップページに戻る

トップ-> アセンブラ 第2章-> 第4章.ファイル操作-> 4-14. ファイル検索

←前ページへ :  トップへ :  練習問題へ→



4-14. ファイル検索

  ファイルの検索を行うシステムコールを紹介します。検索といっても、どのディレクトリに あるかどうかを調べるものではありません。カレントディレクトリもしくは指定したディレクトリに 指定したファイルがあるかどうかを調べるものです。ファイル名の指定にはワイルドカードが 使えます。

  ワイルドカードとは、「*」「?」のことで、「*」は任意の0文字以上の文字(列)、「?」は 任意の1文字に置き換えられます。すなわち「ABC*.TXT」は、「ABC.TXT」、「ABCD.TXT」などが 当てはまります。「ABC?.TXT」は「ABC.TXT」は当てはまりません。また、「*.*」 とすれば すべてのファイルが当てはまります。

最初に一致するファイル名の検索

	AH = 4Eh
	DS:DX = 探すファイル名の格納アドレス
	CX = ファイル属性(詳細はこちら)
	INT 21h

	戻り値:CF = 0 のとき
	     正常に実行された
	   :CF = 1 のとき
	     AX = 02h DS:DXで指定したパスが無効
	     AX = 12h 該当するファイルは存在しない

  ファイル属性についてはすでに解説した。ここで指定する ファイル属性は特別なファイルを検索する場合にのみ使用する。すなわち「dir」コマンドで 通常表示されないファイルの検索を行う場合で、具体的には「システムファイル」、 「隠しファイル」そしてディレクトリを指します。「リードオンリー」、「アーカイブ」 属性のファイルは特に指定しなくても勝手に探し出してくれます。

  すなわち、通常のファイル、リードオンリーファイルのみを探したい場合は、 CX=0で構いません。システムファイル、隠しファイルも検索したい場合は、CX=6を ディレクトリのみ検索したい場合はCX=10h、すべて検索したい場合はCX=16hを指定します。

  検索し、指定のファイルを見つけた場合にはDTAという領域に、 ファイル名などの情報が書き込まれます。DTAは標準ではPSPの 80h番地から始まっています。またDTAはプログラマーが設定したり、取得したりすることも 可能です。(詳細はこちら)

  DTAの1Eh番地からASCIIZ文字でファイル名が格納されていますので、これを利用して ファイルをオープンしたり処理を行うことができます。また、DTAの16h番地にファイルの 時刻、18h番地にファイルの日付が格納されています。

  ワイルドカードを使用した場合、該当するファイルが複数あっても1つしか情報は 得られません。どの順番に得られるかは解説するのが難しいので、ここでは不定と覚えて おいてください。そして、複数該当するファイルがあり、次のファイルの情報が得たい場合は 次のシステムコールを使用します。

次に一致するファイル名の検索

	AH = 4Fh
	INT 21h

	戻り値:CF = 0 のとき
	     正常に設定できた
	   :CF = 1 のとき
	     AX = 12h 該当するファイルは存在しない


←前ページへ :  トップへ :  練習問題へ→