トップ->アセンブラ 第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-1. ファイルオープン

←前ページへ :  トップへ :  次ページへ→



ファイル操作



4-1. ファイルオープン

  アプリケーションのほとんどはファイルを読んだり、書いたりします。MS-DOSでは、 Ver.2.0までFCB(File Control Block)というものを利用してファイル操作を行っていました。 しかし、それ以降のMS-DOSではファイルハンドルというものを利用しています。FCBを 利用したファイル操作は、それ以降のMS-DOSでも使用することはできますが、使い方が 面倒なことや機能的な面で、互換性を保つ必要がある場合にのみ使用するように推奨されています。

  ファイルを読んだり、書いたりするためには、ファイルをオープンしなくてはなりません。 そして使い終わったファイルはクローズしなくてはなりません。

  ファイルのオープンするためには、ファイル名(パス名)とそのファイルをどのように 扱うかを指定します。そしてファイルをオープンした後は、ファイルハンドルという 番号で管理します。

  余談になりますが、MS-DOSのメモリー管理はセグメントで行っていましたが、MS-Windowsでは メモリー管理も、ウインドウ管理も、当然ファイルも、ほとんどの資源がハンドルという番号で 管理されています。その原点が、このファイルハンドルというわけです。


ファイルオープン

	AH = 3Dh
	AL = ファイルアクセスモード
	DS:DX = ファイル名(パス名)の格納アドレス
	INT 21h

	戻り値:CF = 0 のとき
	           AX = ファイルハンドル
	    CF = 1 のとき
	           AX = 0001 : シェアリングモードが無効
	           AX = 0002 : ファイル名が無効またはファイルが存在しない
	           AX = 0003 : パス名が無効または存在しない
	           AX = 0004 : オープンしているファイル数が多すぎる
	           AX = 0005 : ディレクトリやボリュームをオープンしようとした。または
	                       リードオンリーファイルをライトモードでオープンしようとした
	           AX = 000C : アクセスモードが無効

  ALの上位1ビットは「インヘリッドビット」と呼ばれるもので、次の3ビットは 「シェアリングモード」を表します。これらについての説明は省略しますが、 普通はすべてのビットを「0」にすると覚えておいてください。

  そして、下位4ビットは「アクセスモード」で、ファイルを読むだけで書き込みはしない場合は 「0」、ファイルを書くだけで読まない場合は「1」、読み込みも書き込みも行う場合は「2」を 設定します。

  DS:DXにはファイル名もしくはパス名が格納されているアドレスを指定しますが、ファイル名、 パス名の最後には「00h」を格納し、ASCIIZ文字列として格納していなければなりません。

  以上を設定し、「INT 21h」を呼び出し、CF=0で帰ってくれば、正常にファイルをオープン できたことになり、AXにファイルハンドルが返ってきます。もしCF=1ならば、エラーがあった ことを示します。

  エラーコード「4」では、CONFIG.SYSに記入されている「FILES = ??」の値が小さく、 ファイルハンドルの数が足りなくなってしまい、ファイルをオープンできなかったことを 示します。


←前ページへ :  トップへ :  次ページへ→