MBR的详细分析
0000:065E 7405 JZ 0665 ;0Ch类型的分区转0665h先行预处理 0000:0660 3AC4 CMP AL,AH ;0Bh:用传统INT 13h就可以访问的FAT32分区 0000:0662 752B JNZ 068F ;其他类型的分区转068Fh ; ; 0000:0664~0000:06A1:根据分区类型和分区表表项内容进行读取分区引导记录前的处理工作 0000:0664 40 INC AX ;★★★0Bh类型的分区由此开始处理,此条指令用意是清ZF位 0000:0665 C6462506 MOV BYTE PTR [BP+25],06 ;★★★0Ch类型的分区由此开始处理 ;为什么取值06,一时没有自圆我说的解释,请耐心几天吧。 0000:0669 7524 JNZ 068F ;请注意上面指令对ZF位的影响:0Bh类型分区转,0Ch则不转 ; 0000:066B~0000:068C这段代码仅当分区类型是0Ch、0Eh才有获得执行的机会 0000:066B BBAA55 MOV BX,55AA ;★★★0Eh类型的分区由此开始处理 0000:066E 50 PUSH AX ; 0000:066F B441 MOV AH,41 ;扩展INT 13h功能,检测BIOS是否已经支持扩展INT13h 0000:0671 CD13 INT 13 ;入口参数:BX=55AAh,DL=驱动器号,AH=41h 0000:0673 58 POP AX ;执行完恢复AX为060Eh 0000:0674 7216 JB 068C ;不支持则转 0000:0676 81FB55AA CMP BX,AA55 ; 0000:067A 7510 JNZ 068C ;扩展INT13h不可用也转 0000:067C F6C101 TEST CL,01 ;测试扩展盘访问是否被支持 0000:067F 740B JZ 068C ;不支持还转 ; 因为扩展INT13h方式读盘与标准INT13h方式读盘有很大差别,所以0000:0686处指令修改其后的代码以保证按
|