2010-01-02 29 views
1

我已经给了一个项目结束项目来编写汇编代码来读取MBR并将其保存到软盘。我想我设法在虚拟机器中用DOS中的INT 13h读取它。该机器只有一个硬盘和一个安装XP的分区。 当我读取MBR并打印它时,它给了我很多垃圾,并且在垃圾中说:无效的分区表。加载操作系统时出错......就像在这个网站上一样:http://mbr.adamsatoms.com 但是我的系统启动正常。我是否正确阅读了MBR?它真的是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

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

+0

谢谢。现在我明白了,所以如果发生错误,MBR中的错误就可以使用,并不意味着现在有错误。 – Auxiliary 2010-01-02 14:38:51

2

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

相关问题