1

MASM32 (バージョン 10) を使用しています。文字列と整数を画面に出力する最も簡単な方法を教えてください。特定の行だけでなく、完全なソース コードを提供してください。

ありがとうございました。

編集:

.386
.model flat, stdcall
.stack
.data
stest db "This is a test", 0
.code
main proc
    mov ah, 09h
    lea dx, stest
    int 21h
main endp
end main

何も出力せずにクラッシュします。他にもいくつか試しましたが、さまざまな問題がありましたが、唯一の一般的なことは、画面に文字列が表示されないことです:)

4

3 に答える 3

3

DOS 割り込み ( int 21h) を使用しているようですが、 も使用.model flatしています。これは、DOS プログラムを作成していないことを示しています (DOS はフラット モデルをサポートしていません)。

Windows での実行に適した 32 ビット コンソール モード プログラムをビルドする場合は、DOS 割り込みを使用できません。以下は、Win32 呼び出しを使用した 32 ビットの "hello world" Windows の例を紹介する記事です: 32-Bit Flat Memory Model MASM Code for Windows NT

16 ビットの DOS コードを作成する場合は、おそらく「小さい」メモリ モデルから始めたいと思うでしょう。

于 2010-12-31T21:28:23.113 に答える
1

int21/09 では、文字列をドル記号 ($) で終了する必要があることに注意してください。また、コードが何かを出力したとしても、プログラムをまったく終了しないため (int21/4c を参照)、直後にクラッシュし、未定義のメモリを実行し続けます。メモリ モデルと環境によっては、最初にセグメント レジスタとスタックを自分でセットアップする必要がある場合もあります。これはすべて、最初から int21 サービスに実際にアクセスできることを前提としています。

最後に、一般的なアドバイスとして、デバッガーを動作させ、プログラムをトレースします。

于 2011-01-01T00:27:29.837 に答える
1

組み込みの「印刷」関数/マクロを使用します。適切な通話が挿入されます。

print "This is a test",13,10,0
于 2011-02-10T21:07:32.340 に答える