マシン語(MS-DOS)の実行過程がわかりません
LSI C-86 Ver 3.30 試食版を利用して、「hello, world」を表示するプログラムをコンパイルしました。
出来上がったhello.exeがどのように実行されるのか知りたくて、SYMDEBコマンドでステップ実行してみることにしました。
その前にバイナリエディタでhello.exeを開くと、ヘッダは512バイトあり、200hからは最初のマシン語命令「B8 8B 02」が確認できました。
アセンブリ言語では「MOV AX,028Bh」となり、AXレジスタに028Bhがセットされるはずです。
しかし、実際にエミュレータ上で「SYMDEB hello.exe」実行してみると、次のような結果になりました。
--------------------
Microsoft (R) Symbolic Debug Utility Version 4.00
Copyright (C) Microsoft Corp 1984, 1985. All rights reserved.
Processor is [8086]
-r
AX=4B01 BX=0000 CX=2CC1 DX=0000 SP=09C4 BP=0000 SI=0000 DI=0000
DS=117A ES=117A SS=146E CS=118A IP=0000 NV UP EI PL NZ NA PO NC
118A:0000 B81514 MOV AX,1415
-u
118A:0003 8ED0 MOV SS,AX
118A:0005 BC540F MOV SP,0F54
118A:0008 368C1E5800 MOV SS:[0058],DS
118A:000D B430 MOV AH,30 ;'0'
118A:000F CD21 INT 21
118A:0011 36A34500 MOV SS:[0045],AX
118A:0015 8A1E8000 MOV BL,[0080]
118A:0019 32FF XOR BH,BH
--------------------
最初のマシン語命令が、「MOV AX,1415」と書き換わっています。以降の命令はバイナリエディタで見た通りのようです。
なぜ最初の命令が書き換わってしまうのでしょうか?