アセンブリ言語最強伝説
■ このスレッドは過去ログ倉庫に格納されています
0098大和魂 ◆TLCPn.jaa2
2009/06/27(土) 04:54:42ところで、入門書・入門サイトの類いの冒頭にかならずと云っていいほど
載っている"Hello, World!"のDOS画面表示プログラムですが、
大半の入門書、また実際のコードを見ても、流れは
・dxレジスタにメッセージ文のあるオフセットアドレスを代入
・AH=09H / INT 21Hのfunction callにより、コンソールに表示
となっていますが、ほとんどのケースで
mov dx, offset err_msg ; [MASM表記]
mov dx, err_msg ; [NASM表記]
ですね。先日PC-98の小物ツールのソースを読んでいたら、dxレジスタへのアドレス代入に
lea dx, [err_msg] ; [NASM表記]
となっているものがありました。実際にアッセンブルすると1バイト余分に食ってしまい、
たとえばAH=09Hファンクションが4箇所あれば、4バイト分実行バイナリ(COMファイル)が
大きくなってしまっています。この場合、mov dx, offset ではなく、lea命令で代入するのは、
擬似命令のoffsetを使いたくない、という理由ではないですよね??ご教示ください。
あとエラーメッセージやUsageの表示に、AH=40H/BX=0001Hのfunction callを用いる利点と欠点を
ご教示ください。数バイト分バイナリが大きくなってしまうのですが、意味が無いでしょうか??
■ このスレッドは過去ログ倉庫に格納されています