メッセージを何度も表示しようとしています。アセンブリ言語で何度もメッセージを表示する
私はNASMを使用して、私はこのプログラムを使用:
MOV cx, 1
mov ax, 10
re:
CMP ax, cx
JS fin
mov dx, texte
INC cx
JMP re
fin:
Int 21h
texte: db 'Hello, World !!'
メッセージを何度も表示しようとしています。アセンブリ言語で何度もメッセージを表示する
私はNASMを使用して、私はこのプログラムを使用:
MOV cx, 1
mov ax, 10
re:
CMP ax, cx
JS fin
mov dx, texte
INC cx
JMP re
fin:
Int 21h
texte: db 'Hello, World !!'
カップルより多くの事:ここに詳細情報を参照してください出力を実行するINT21Hため
または、1から10までループするために2つのレジスタを使用する代わりに、CXを10からカウントするか、10をCMPの即値オペランドとして指定します。 SIとDIも使用されていませんが、なぜIDXはBXに言及したのですか? –
これを行う方法は数多くあります。 "LOOP re"コマンドがおそらく最も簡単です。 –
[LOOPが遅い]を除いて(http://stackoverflow.com/questions/35742570/why-is-the-loop-instruction-slow-couldnt-intel-have-implemented-it-efficiently)、良い初心者を教える習慣。コンパイラの出力を見るときに実際のコードを見つけられないので、cmp/jcc(またはdec/jnz)でループを作成することもできます。 LOOPについて言及しないほうが簡単です。なぜなら、コードサイズの最適化以外では役に立たないからです。 –
現在、あなただけの下部にint 21h
を呼び出します。 ループ内に移動してみます。
また、私は最後にアセンブリで何かをしてから本当に長い時間がかかっていますが、int 21h
が何をするかを決定するためにいくつかのレジスタを準備する必要があるでしょう。 http://spike.scu.edu.au/~barry/interrupts.html#ah09
私はそれを変更し、nasmコマンドを使用しましたが、メッセージは表示されません。 –
あなたの質問のコードを変更しないでください。代わりに、下に更新されたコードを追加してください。 – fuz
どうしたのですか? (また、 'ax'を初期化しているようには見えません) – obe
問題はコードにメッセージが表示されませんHello、World !! 10回 –