ユーティリティの使い方


★各種デバッガは種類が多いですから、それぞれマニュアルを参照すること
(DEBUG, SYMDEB+MAPSYM, Codeview etc...)

★MASM
MASM [スイッチ] [.ASM], [.OBJ], [.LST], [.CRF] 

(MASM 3.xまでは以下のような使用方法でも可能)
MASM [.ASM] [アセンブラ用スイッチ], [.OBJ], [.LST] [リスト用スイッチ], [.CRF]

; を挿入するとそれ以降はデフォルト.
例 MASM hoge.asm, hoge.obj;
→hoge.asmをhoge.objに変換、LST,CRFは作成しない

アセンブラ用スイッチ
/A         ●セグメントをアルファベット順に整列して出力
/E         ●浮動小数点演算で86エミュレートコードを作成
/ML        ●名前に大文字小文字の区別をつける
/MX        ●パブリックと外部名に大文字小文字の区別をつける
/R         ●浮動小数点演算で87用コードを作成

リスト用スイッチ
/D          パス1リストを作成(デフォルトではパス2リストのみ)
/O          リストファイルを8進数で出力する
/X          偽条件ブロックのリスト出力を抑止

スイッチ
/B(1-63)   ★ファイルバッファサイズを1k - 63kの間に設定
/C         ★クロスリファレンスファイルを作成
/L         ★アセンブルリストを作成
/D(symbol) ★条件付きディレクティブの定義
/I [path]  ★INCLUDEディレクティブで定義したファイル用のサーチパス設定
/N         ★シンボルテーブルリストの出力を禁止
/P         ★286プロテクトモードで問題を発生させる可能性があるかチェック
/T         ★エラーがあった場合のみメッセージを出力する
/V         ★アセンブル処理後に統計情報を表示する
/Z         ★エラーの検出されたソースラインを表示する

無 - MASM 1.20で利用可能
● - MASM 3.00での追加オプション
★ - MASM 4.00での追加オプション


★CREF
CREF [.CRF], [.LST]

.LSTを"CON:"とするとスクリーン表示、"PRN:"とすると印刷


★LIB
LIB [.LIB] [/PAGESIZE:n] [コマンド], [リストファイル名,出力ファイル名]

応答ファイルを@の頭文字で指定可能
応答ファイルは
1行目: 入力ライブラリファイル名(/PAGESIZE:n)
2行目: コマンド
3行目: リストファイル名
4行目: 出力ライブラリファイル名

; 対応, 1行で収まらない場合は & を使う

/PAGESIZEは2のn乗の数を指定する

コマンドはオブジェくトファイルに以下の頭文字をつける
+  追加
-  削除
-+ 置換
*  コピー
-* 移動

例
LIB math +sin -sinc -+cos;
math.libに sin.obj追加, sinc.obj削除, cos.objを更新
LIB math *cos;
math.lib内のcos.objをコピーしてcos.objを出力
LIB math -*cos;
math.lib内のcos.objをコピーしてcos.objを出力
さらにmath.lib内のcos.objを削除する


★LINK
LINK [スイッチ] [.OBJ], [.EXE], [.MAP], [.LIB]

(LINK 3.xまでは以下のような使用方法でも可能)
LINK [.OBJ][オブジェクト用スイッチ], [.EXE], [.MAP][マップ用スイッチ], [.LIB]

; を挿入するとそれ以降はデフォルト.
OBJは + を使う事で連結可能
LINK hoge1 + hoge2 + hoge3, hogehoge;
OBJは応答ファイルを@の頭文字で指定する事が可能

例LINK @hogelink

応答ファイルは
1行目: オブジェクトファイル(スイッチ)
2行目: 出力ファイル名
3行目: マップファイル名(スイッチ)
4行目: ライブラリファイル名

; 対応, 1行で収まらない場合は + を使う

オブジェクト用スイッチ
数字は、8進数は0から、16進数は0xという頭文字をつける
●/C:[number] or /CPARMAXALLOC - 最大割り当てスペースの設定 (1-65535)
 /D or /DSALLOCATE - DGROUPの処理を逆にする
※バージョンによって省略形が/DSになっていることがあります。 
●/DO or /DOSSEG - DOSのセグメント配列を利用
 /H or /HIGH - プログラム開始アドレスをできるだけ高いアドレスに設定
 /LI or /LINENUMBERS - 各ソース行の開始アドレスをリスト
 /NO - デフォルトのライブラリ検索を行わない (LINK 3.00以降は利用不可)
●/NOD or /NODEFAULTLIBRARYSEARCH - 省略時のライブラリを無視
●/NOG or /NOGROUPASSOCIATION - データ・コード項目にグループを割り当てる際、グループ関連を無視する
●/NOI or /NOIGNORCASE - シンボル名の大文字小文字を区別
●/O:[number] or /OVERLAYINTERRUPT - オーバーレイローディングルーチンの割当設定(0-255)
                                    デフォルトの03FHは無効
 /P or /PAUSE - .EXEを出力する前に停止 (ディスク交換用)
●/SE:[number] or /SEGMENTS - 最大のセグメント数を設定
 /ST:[number] or /STACK - スタックサイズの設定 (1-65535)
 
マップ用スイッチ
 /M (/MAP) - パブリックシンボルマップを作成

無 - LINK 2.20で利用可能
● - LINK 3.00での追加オプション

★EXE2BIN
EXE2BIN [.EXE] [.BIN]

MS-DOSのコンポーネントの一部ですが、よく使うので掲載。
.BINは一般的に拡張子.COMで利用する
プログラムの開始アドレスがEND疑似命令によって定義されていない場合、セグメントの指定を要求される

★MAKE

MAKE [メイクファイル]

メイクファイルは以下のように書く

hoge.obj:	hoge.asm
	MASM hoge, hoge;
hoge2.obj:	hoge2.asm
	MASM hoge2, hoge2, hoge2, hoge2;
hoge2.ref:	hoge2.crf
	CREF hoge2, hoge2
hoge.exe:	hoge.obj hoge2.obj \lib\fuga.lib
	LINK hoge+hoge2, hoge, hoge/map, \lib\fuga;
hoge.sym:	hoge.map
	MAPSYM -l hoge.map

★EXEPACK
EXEPACK [入力.EXE] [出力.EXE]

★EXEMOD
EXEMOD [入力.EXE] [/STACK HEX] [/MIN HEX] [/MAX HEX]
スタックサイズ、アロケーション最小値、アロケーション最大値は全てHEXで指定します。

戻る