トップ->アセンブラ 第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章-> 第10章.XMS-> 10-2. XMS使用法

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



10-2. XMS使用法

  XMSを使用するためには、XMSドライバーが込む込まれているかを調べる必要があります。 これには、「INT 2Fh」というMS-DOSのシステムコールを使用します。


XMSドライバーの有無を調べる

	AX = 4300h
	INT 2Fh

	戻り値:AL = 80h : XMSドライバーは組み込まれている
	    AL = それ以外 : XMSドライバーは組み込まれていない
  「INT 2Fh」というMS-DOSシステムコールは、MS-DOS Ver3.1で追加され、 MS-DOS Ver 5.0未満では非公開でした。このシステムコールは、マイクロソフトが 供給しているデバイスドライバー、常駐プログラムの組み込み状況を調べるものでした。

デバイスドライバー、常駐プログラムの組み込み情報の取得

	AH = プログラム番号(下記参照)
	AL = 00h
	INT 2Fh

	戻り値:AL = 00h : 組み込まれていない
	         01h : 同時に組み込めないものが組み込まれている
	         FFh : 組み込まれている
	プログラム番号
		01h : PRINT
		06h : ASSIGN
		10h : SHARE
		11h : REDIR
		12h : MSDOS.SYS
		B7h : APPEND
		B8h : XPORT

  さて、本題に戻ります。XMSドライバーのファンクションを呼び出すためには、今までのように 「INT ??h」を呼び出すのではなく、XMSドライバーを直接ファーコールします。そのための コール先を調べなければなりません。そのためには下記のようにします。

XMSドライバーのコール先の取得

	AX = 4310h
	INT 2Fh

	戻り値:ES:BX = コール先

  これらをまとめると、XMSファンクションを呼び出すための準備は下記のようになります。
EMB_CHECK:			;embのチェック
	mov	ax,4300h
	int	2fh
	cmp	al,80h
	jz	@@
	stc
	ret
@@:
	mov	ax,4310h
	int	2fh
	mov	[XMS_CALL+0],bx
	mov	[XMS_CALL+2],es
	clc
	ret
XMS_CALL	dw	0,0

;このサブルーチンは、XMSドライバが組み込まれていなければ、CF=1を返します。 ;組み込まれていれば、[XMS_CALL]にコール先を格納します。 ;使用するためには、下記のようにします。 ; mov ah,0 ; call far [XMS_CALL]


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