はじめてのアセンブラ
とりあえず『独習アセンブラ』にあったコードを書く.書かなきゃ始まらん.
; 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っぽい.とりあえずそんな感じです.