アセンブリ言語最強伝説
at TECH
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ですよね。
次ページ続きを表示1を表示最新レス表示スレッドの検索類似スレ一覧話題のニュースおまかせリスト▼オプションを表示暇つぶし2ch
5346日前に更新/64 KB
担当:undef