-1

アセンブリ (x86) 言語の学習に興味があり、最初の hello-world プログラムを作成しました。windows-xp でデバッガーを使用しましたが、すべての行が何をするのか誰かが説明できるのではないかと思います。

 1) jmp 115
 2) db 'Hello world!$'
 3) -a 115 
 4) mov ah, 09
 5) mov dx, 102
 6) int 21
 7) int 20

アセンブリで実行可能ファイルを作成するためのすべてのステップのスクリーンショットを添付しました。

ここに画像の説明を入力

4

1 に答える 1

5

Intel の Software Developer's Manual (特に Volume 2) や x86 アセンブリ チュートリアル ( The Art of Assemblyなど)を読むことをお勧めします。

コードの内訳:

1) jmp 115

CPU が「Hello world」文字列をコードであるかのように実行しようとしないように、命令にジャンプしmov ah,09ます (CPU はコードとデータの違いを認識できません)。


2) db 'Hello world!$'

文字列を宣言します。ドル記号は、一部の DOS 割り込み関数で文字列ターミネータとして使用されます。


3) -a 115

debugアドレス 115 から始まる後続のコードをアセンブルするように指示します。


4) mov ah, 09

値 9 を register に入れahます。


5) mov dx, 102

「Hello world」文字列のアドレスを登録しますdx


6) int 21

割り込み 21h / 関数 9 (書き込み文字列) を実行します。関数番号は register で期待されah、文字列オフセットは register で期待されdxます。これは、前の 2 つの命令によって処理されました。


7) int 20

割り込み 20h を実行 (プログラムを終了)

于 2013-09-18T14:46:32.757 に答える