トップ->アセンブラ 第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章-> 第1章.コマンドラインからの引数-> 1-1. コマンドラインからの引数

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



コマンドラインからの引数

1-1.コマンドラインからの引数

  コマンドラインからの引数とは、C言語では「main関数の引数」と呼ばれる。 ようするに、MS-DOSのプロンプトからプログラム名の後にスペースを空けて書く 文字列のことを言う。
A>TEST /?

A>・・・プロンプト
TEST・・実行プログラム名
/?・・・引数
  この引数は例えば、プログラムの動作モード(使い方の表示など)を指定したり、 開きたいファイル名などを指定するのに使われる。

  C言語では半角スペースを区切りとして、配列に格納されるが、アセンブラでは ある決まった領域に、入力したままの文字列として格納されている。

  ある領域とはPSP(プログラム・セグメント・プリフィックスの中である。) PSPとはプログラムが実行されるときの状態などが格納されており、COMファイルでは (このホームページで紹介するプログラムはすべてCOMファイル)CS:0000hから (CS=DS=ESである。)100hバイト存在している。EXEファイルではES:0000hからである。また、 後述するシステムコール(AH=62h)を使用して、 求めることもできる。

  そして、PSPの80h番地に文字数が1バイトで格納され、 81h番地から引数が格納され、'0Dh'で終わっている。 PSPの大きさは100hバイトなので、引数は最大でも7Ehバイトしか入らないことになる。

  以下に、引数を表示するプログラムを示す。表示は システムコール(AH=09)を使用しているので、そちらを参照してほしい。

CODE	SEGMENT
	ASSUME	DS:CODE,CS:CODE,ES:CODE,SS:CODE
	ORG	100h

START:
	mov	bx,80h
	add	bl,[bx]
	inc	bx
	mov	[bx],byte ptr 24h	;引数の最後の0Dhを24hに変える

	mov	ah,9
	mov	dx,81h
	int	21h              	;引数表示。ah=9はDS:DXから'24h'が現れるまでの部分を表示する

	mov	ax,4c00h
	int	21h              	;終了

	ENDS
	END	START
; 一部のコンパイラでは、
;CODE	ENDS
;	END	START
;と記述しなければいけないようです

実行例)
A>TEST ABCD.TXT
 ABCD.TXT
A>


PSPアドレスの取得

	AH = 62h
	INT 21h

	戻り値: BX : 現在実行しているプログラムのPSPのセグメントアドレス

文字列の表示

	AH    = 9h
	DS:DX = 表示させたい文字列のアドレス
	INT 21h

	戻り値:なし


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