次のような単純な 16 ビット アセンブリがあります。
push bx
StrVar db "My string!",0
push ax
.. other code..
NASM でコンパイルしようとしていますが、質問があります。末尾のゼロを含む文字列が 16 ビットの倍数でない場合 (たとえば、19 バイトのゼロが含まれているとします)、文字列に続く asm の位置合わせが正しくありません。めちゃくちゃになります(逆アセンブラで見ました)。
どうしてこんなことに?オペコードが常に 16 ビットであるとは限らないことに気付きました。逆アセンブラーは、オペコードが従うべき境界をどのように決定するのでしょうか?
その上..どうすればこれを防ぐことができますか?各文字ごとに文字列をカウントする必要がありますか?