このセグメントの意味:
MOV SI,SP
PUSH AX
POP ES
ES はどのように 0000:7c00 (およびさらに DS) を取得しますか
このMBRモデルでは?
0000:7C00 FA CLI disable int's
0000:7C01 33C0 XOR AX,AX set stack seg to 0000
0000:7C03 8ED0 MOV SS,AX
0000:7C05 BC007C MOV SP,7C00 set stack ptr to 7c00
0000:7C08 8BF4 MOV SI,SP SI now 7c00
0000:7C0A 50 PUSH AX
0000:7C0B 07 POP ES ES now 0000:7c00
0000:7C0C 50 PUSH AX
0000:7C0D 1F POP DS DS now 0000:7c00
0000:7C0E FB STI allow int's
0000:7C0F FC CLD clear direction
0000:7C10 BF0006 MOV DI,0600 DI now 0600
特殊なケース (または文書化されていない手順) のようなものであることをリリースしました - 中断の前後に CLI / STI がブロックされます。
/upd ソースを追加: http://www.nondot.org/sabre/os/files/Booting/mbr.txt