特にDOSBoxを介して8086プロセッサをエミュレートするために、デバッグを使用してアセンブリプログラミングを学んでいます。ループを作ろうとしています。次のようなものを書くとき:
looplabel: 命令 .. .. ループ ループラベル
このスクリーンショットが示すように、エラーが発生します。
デバッグツール (DOSBox) を使ってループを作るのを手伝ってくれませんか??
debug
かなり古いデバッガです。そのため、labes は許可されず、コードを記述すると、メモリに直接書き込まれます (私の初期の頃を思い出します :))。
したがって、アドレスに関連するものを書きたい場合は、アドレスを直接指定する必要があります。
あなたの場合、アドレスを覚えておく必要073f:0106
があり、そこにジャンプまたは分岐したいときは、ラベルを使用するのと同じようにそれを使用します。
-a
15E7:0100 mov si,0
15E7:0103 mov cx, 3
15E7:0106 mov al, [si]
15E7:0108 dec cx
15E7:0109 jne 15e7:0106
15E7:010B ret
15E7:010C
-
これは、後で命令を挿入すると、コードの残りの部分を移動してアドレスを調整する際に問題が発生する可能性があるため、プログラムを作成するには非常に面倒な方法です。
アセンブリを学習したい場合は、代わりにアセンブラを使用することをお勧めします。ただし、小さなコード サンプルをテストするには、簡単な方法です。