1

実行時に命令ポインタが実際に到達していなくても、命令109が実行されているように見えるのはなぜですか。私の知る限り(C ++のバックグラウンド)、プロセッサは命令1を一度に1つずつ順番に処理します。アドレス100、102、105、および107が最初に実行されるので、INT 21は、次の行(まだ宣言されていない)になる前に、メモリ位置109の内容を表示できるのはなぜですか。

(デバッグ時にこれらの命令を入力するとします)

100 MOV AH,09
102 Dx,109
105 INT 21
107 JMP 100
109 DB 'Hello World', '$' <Enter> <Enter> 
4

2 に答える 2

6

DBは命令ではなく、アセンブラ ディレクティブとも呼ばれる疑似命令です。これは、現在のアドレスに次のデータバイトを格納するようにアセンブラに指示します。

于 2013-01-20T12:08:24.120 に答える
2

プログラムがアセンブルされると、アセンブラは文字列を正しいアドレスに配置します。プロセッサは、実行していないアドレスから読み取ることができます。命令ポインターは 1 つのポインターのみであり、命令ポインターより大きいアドレスから問題なく読み取ることができます。結局のところ、メモリは「ランダムアクセス可能」です。

「宣言」はありません。住所しかありません。一部のアセンブリ プログラムにはラベルがありますが、それらのラベルはアセンブリ時にアセンブラによってアドレスに変換されます。

于 2013-01-20T12:08:22.497 に答える