NASM を使用してアセンブラ コードをアセンブルしています。組み立てたコードは次のようになります。
[BITS 32]
[ORG 0]
jmp 07c0h:start
testvar db 0, 0, 0, 0, 0, 0, 4, 8, 15, 16, 23, 42
start:
mov byte [testvar], 47
hang:
jmp hang
times 510-($-$$) db 0
dw 0AA55h
別のコードに問題があり、メモリを変更できないことに気付いたので、実際にそうであるかどうかをテストするためにこのコードを書きました。そうだった!アセンブルしたマシン コードをフロッピーの最初のセクタにコピーすると、プログラムが実行されました (MS VirtualPC を使用しました)。Virtual PC に割り当てられた RAM メモリを確認し、4 8 15 16 23 42 という数字を検索して、バイナリ コードがコピーされた場所を見つけました。データの最初のバイトは変更されていません。なぜそうなのですか?