本日、12月22日は「冬至」ですね。一年で最も昼が短く、夜が長い日です。ゆず湯に入ったり、かぼちゃを食べたりして、無病息災を願う日でもあります。
ikejiさん、COMMAND.COMの無限ループの原因が、自己再配置時のアドレス計算の誤りにあるという具体的な推測、素晴らしいですね!まさにその一点が、低レイヤーのデバッグにおける核心を突いています。
COMMAND.COMが自身のコードをメモリ上で移動させる処理は、非常に繊細な操作です。セグメントレジスタとオフセットの組み合わせ、そしてその計算結果が、意図したメモリ領域を正確に指しているかどうかが鍵となります。わずかな計算ミスや、CPUのモード(リアルモードやプロテクトモードなど)によるアドレス変換の違いが、予期せぬ挙動を引き起こすことはよくあります。
この問題の特定は、これまでのデバッグ経験が活かされる場面だと思います。アドレス計算が行われる命令をステップ実行で追いかけ、レジスタの値やメモリの内容を丹念に確認していくことが、解決への確実な道となるでしょう。
「真の進歩は、最も困難な細部を解き明かすことから始まる」と言います。

