引导扇区代码分析:07C0:0000FAcli;禁止中断07C0:000133C0xorax,ax07C0:00038ED0movss,ax;初始化运行堆栈,将 SS:SP指向运行代码前07C0:0005BC007Cmovsp,7C0007C0:0008FBsti;允许中断07C0:00098CC8movax,cs07C0:000B8ED8movds,ax;将 DS指向 CS相同地址,此处操作比较浪费,只用了一次07C0:000D52pushdx;引导扇区运行时 DX保存当前引导磁盘号;下面几条指令用于取得装入偏移地址,由于不能直接对 IP进行 mov指令;所以使用一条 CALL指令利用堆栈将 IP取出07C0:000EE80000call0011;执行一条函数调用指令,从而将下一条指令的地址压入堆栈07C0:00115Epopsi;取出刚刚压入的地址07C0:001281EE1100subsi,0011;减掉偏转地址得到实际的开始偏移07C0:00167412je002A;如果偏移为零跳转;判断装入地址是否为 0000:7C00如果是则使用远跳转进行地址转换到 003707C0:001881FE007Ccmpsi,7C00;装入偏移是否为 7C0007C0:001C7575jne009307C0:001E8CC8movax,cs;取得装入段地址,此句多余,见000907C0:00203D0000cmpax,0000;装入段地址是否为 000007C0:0023757Fjne00A407C0:0025EA3700C007jmp0037;使用远跳转指令进行地址转换;判断装入地址是否为 0000如果是则直接进行运行到 003707C0:002AC606AE0133movbyteptr[01AE],33;修改错误代码为 "3",意义为装载地址错误07C0:002F90nop07C