MBR说无效分区表 - 但系统有效!为什么?

时间:2010-01-02 14:17:59

标签: assembly dos mbr

我已经获得了一个术语结束项目来编写汇编代码来读取MBR并将其保存到软盘中。我想我设法用DOS中的INT 13h在virtualBox机器中读取它。该机器只有一个硬盘,其中一个分区安装了XP。 当我读取MBR并打印它时,它给了我很多垃圾,并且在垃圾中它说:无效的分区表。加载操作系统时出错......就像在本网站中一样:http://mbr.adamsatoms.com 但是我的系统很好。我是否正确阅读了MBR?真的是MBR吗?为什么会这样?如果它有帮助,这是我的阅读代码的一部分:

        mov dx,80h ; hard disk first drive
        mov cx,1 ; Cylinder & Sector
        mov bx,ds
        mov es,bx
        mov bx,offset result
        mov ax,0201h ; function & sector to be read
        int 13h     

提前致谢。

2 个答案:

答案 0 :(得分:2)

您正在看到启动加载程序的一部分。这是存储在驱动器的第一个扇区中的一个程序,它的作用是读取分区表并开始启动操作系统。如果失败,它会显示您刚刚找到源的错误消息......“垃圾”的其余部分将是引导加载程序的代码(在机器代码中),您需要对其进行反汇编以使其有意义

答案 1 :(得分:2)

这是正常的,“垃圾”是组成MBR的机器代码,如果MBR代码在尝试启动PC时遇到一些问题,则会显示各种错误字符串。对MBR代码的完整分析正好在您所说的页面上。