アセンブリ言語最強伝説
at TECH
[
2ch
|
▼Menu
]
■コピペモード
□
スレを通常表示
□
オプションモード
□このスレッドのURL
■項目テキスト
100:デフォルトの名無しさん 09/06/27 10:40:47 その程度の内容でleaを使うかmovを使うかは、ただの趣味の問題程度。 leaのほうが[bx+si+10]とかそういう指定もできるので応用がある。 ファンクションコールはMS-DOSの話になるが、「厳密さの点で異なる」という 言葉の意味がよくわからない。 101:デフォルトの名無しさん 09/06/27 11:00:14 >>98 エラーメッセージに、AH=09H / INT 21H を使わないのは、エラー系は標準出力以外を使う文化が あるからじゃないかな。 102:デフォルトの名無しさん 09/06/27 11:01:55 この場合の厳密さ、ってなんだろうね。 09Hは標準出力に送信する、終端は'$'。 40Hは出力先をファイルハンドルで指定する、出力するデータのサイズも指定する。 両者は別物。 103:大和魂 ◆TLCPn.jaa2 09/06/27 11:02:51 >>100 回答ありがとうございます。 leaを使うか、mov offsetの組み合わせでアドレス代入するかは、趣味程度の違いなんですね。 そうか、leaだと、確かにご指摘のようなパターンの応用も利きますね。 ところで後段、 mov ah, 9 lea dx, [err_msg] int 21h とすると、リターンコードがありません。しかし、 mov ah, 40h mov bx, 0001h mov cx, err_msglen mov dx, err_msg int 21h section .data err_msg: db 'An error has occured.', 0dh, 0ah, '$' err_msglen equ $ - err_msg としますと、実行後axレジスタに戻り値が格納され、各種判定に用いることが出来るということで、 「厳密」という表現を用いました。例えが不適切かも知れませんが、Cで云うところの puts("An error has occured."); と、書式付き出力命令である fprintf(stderr, "An error has occured.\n"); と対比可能ではないかな、と思いまして。 # int 20hでプログラム終了という太古のソースは、さしずめ void main(void){}で、DOSへの # 戻り値のない、現在で云うANSI C非準拠のコードと同じでしょうかね。 # 80年代後半くらいから、ほとんどは mov ax, 4c00h / int 21hですよね。
次ページ
最新レス表示
スレッドの検索
類似スレ一覧
話題のニュース
おまかせリスト
▼オプションを表示
レスジャンプ
mixiチェック!
Twitterに投稿
オプション
しおりを挟む
スレッドに書込
スレッドの一覧
暇つぶし2ch
5346日前に更新/64 KB
担当:undef