実行ファイルを作る
COMファイル
これまで DEBUG コマンドを使ってアセンブルしてきたプログラムは
コマンドを終了した時点で消えてしまいました
しかし、苦労して作ったプログラムはディスクに保存しておきたいものです
DEBUG コマンドで作ったプログラムは、COMファイルとして保存することができます
COMファイルは COM モデル と呼ばれるMS-DOSの実行形式の一つで
全てのセグメントレジスタが同じ位置を指す、小さい実行ファイルです
Windows や MS-DOS の通常の実行形式 EXE モデル というものもありますが
これについては、この場では触れません
COMファイルの生成は、まずオフセットアドレス 100 からプログラムを作ります
//ただし、後記の W コマンドでアドレスを指定する場合はどこからでも良い
最後は 4C 番のシステムコールで終了するようにプログラムします
そして、BX レジスタを R コマンドを使って 0 にします
さらに、CX レジスタをRコマンドで データのサイズ - 100 とします
例えば、オフセットアドレス 12C で終わっているならば CX レジスタに 2C をセットします
このサイズはプログラムだけではなく、データも含めます
ここまでの作業が終わったら N コマンド を指定します
N コマンドの引数には生成するファイル名を指定します
-N file_name.com
必ず、拡張子は com にしてください
そして、 W コマンドを実行するとプログラムがファイルとして保存されます
-W [address]
address には、書き始めるアドレスを指定します
アドレスを省略すると CS : 100 から BX : CX のバイト数だけプログラムをディスクに書きこみます
だから、BX レジスタを 0 に CX レジスタをサイズ - 100 に設定する必要があったのです
-A 100
15F2:0100 MOV AH , 9
15F2:0102 MOV DX , 10D
15F2:0105 INT 21
15F2:0107 MOV AH , 4C
15F2:0109 MOV AL , 0
15F2:010B INT 21
15F2:010D
-E 10D "Kitty on your lap$"
-R BX
BX 0000
:0
-R CX
CX 0000
:24
-N TEST.COM
-W
00024 バイト書き込み中
これで、カレントディレクトリに TEST.COM というファイルが生成されています
これを実行すると、文字列をコンソールに出力します
正真正銘、アセンブリ言語で作り上げた実行ファイルです