はじめてのアセンブラ

とりあえず『独習アセンブラ』にあったコードを書く.書かなきゃ始まらん.

 ; dispchar.asm
   mov  ah, 02
   mov  dl, 31h
   int  21h
   mov  ah, 4Ch
   mov  al, 0
   int  21h

でもってアセンブル

 D:\asmwork>nasm -f bin dispchar.asm -o dispchar.com

わけが分からなくとも実行.

 D:\asmwork>dispchar.com
 1
 D:\asmwork>

おおおぉぉぉぉぉ!でましたねって"JavaでHelloWorld"さん風にしばし楽しもう.

とりあえずこの.comファイルをバイナリエディタで覗いて見る.

 B4 02 B2 31 CD 21 B4 4C B0 00 CD 21

テキスト曰く,B4てのがレジスタに値を入れろという命令なんだとか.

一旦コマンドプロンプトを閉じて,またcmd.exeから立ち上げて"dispchar.com"を実行してみる.

 D:\asmwork>dispchar.com
 D:\asmwork>

何も出ないっすよ.

何かやらかしたかな?と思ってもう一度アセンブラコードを書き直して,アセンブルして実行.でもやっぱり出ない.バイナリエディタで"dispchar.com"を覗いてみると,

 B4 02 B2 31 CD 21 B4 4C B0 00 CD 21

機械語レベルで完全一致.いやーおかしいでしょ.

で,調べてみたらどうも普通のコマンドプロンプトじゃ駄目らしい.
以下のように御まじないをすると上手く行く.

 D:\asmwork>command
 D:\asmwork>exit

commandってのをやると出力される.ただこれだと画面狭いしコマンドの履歴とか入力補完とか効かないのでexitで元に戻る.元に戻った状態でもOKっぽい.とりあえずそんな感じです.