トップ->アセンブラ 第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章-> 第7章.プロセス管理-> 7-4. リターンコード

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



7-4. リターンコード

  リターンコードとは、C言語で言うmain()関数の戻り値のことで、MS-DOSでは 1バイトの数字である。これは親プロセス(MS-DOSのコマンドラインから実行された場合は MS-DOS)に渡されて処理される。

  例えば、バッチファイルの中でプログラムを実行し、エラーならばバッチファイルを 終了して、正常にプログラムが実行されたら次のプログラムを実行するというような感じで 使用されたり、プログラムから「AX=4B00hのシステムコール」 で子プロセスを実行し、その成功の可否を判断して次の処理を行うなどの 用途で使用する。

  通常、プログラムが正常に終了すれば、リターンコードは0、失敗した場合は その理由によってプログラマーが決めた値を返す。

  バッチファイルでプログラムのリターンコードを得るには「IF 〜 ERRORLEVEL」 を用いる。例えば、下記のようにすると、


  C:\>IF /?
  バッチファイル中で条件処理を実行します.

  IF [NOT] ERRORLEVEL 番号 コマンド
  IF [NOT] 文字列1==文字列2 コマンド
  IF [NOT] EXIST ファイル名 コマンド

    NOT               条件が偽のときだけコマンドを実行するように指定します.
    ERRORLEVEL 番号   最近実行したプログラムが返した終了コードが指定した番号  
                      以上であれば真になるように指定します.
    コマンド            条件が真であれば実行するコマンドを指定します.
    文字列1==文字列2  文字列が一致すれば真になるように指定します.
    EXIST ファイル名      ファイル名に指定されたファイルが実際に存在すれば真に
                      なるように指定します.

  C:\>TYPE TEST.BAT
  TEST.COM
  IF ERRORLEVEL 5 ECHO リターンコードは5以上です

  C:\>
TEST.COMのリターンコードが5以上ならばメッセージを表示し、それ未満 なら何も表示しないバッチファイルになります。

  プログラムから子プロセスを呼び出し、子プロセスからのリターンコードを調べるには 下記のシステムコールを使用します。


子プロセスのリターンコード

	AH = 4Dh
	INT 21h

	戻り値:AL : 子プロセスからのリターンコード
	    AH : 子プロセスの終了状態
	         AH = 0 : 通常終了
	         AH = 1 : CTRL + C による中断
	         AH = 2 : 致命的なエラー
	         AH = 3 : 常駐終了


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