能力值:
( LV7,RANK:110 )
2 楼
嘎嘎 咋给我扣了100KX啊
能力值:
( LV2,RANK:10 )
3 楼
楼猪,别忘了加电启动是实模式,16位代码,只有ax,没有eax,你这样写肯定不对。
能力值:
( LV2,RANK:10 )
4 楼
http://en.wikibooks.org/wiki/X86_Assembly/Bootloaders
The DL register will contain the drive number that is
being booted from which can be used if you want to read more
data from elsewhere on the drive.
所以 mbr 要把 DX (u盘号码) 先存起来.
要读资料的时候再放回去.
能力值:
( LV8,RANK:130 )
5 楼
收藏了,谢谢
能力值:
( LV7,RANK:110 )
6 楼
自己顶一下
能力值:
( LV7,RANK:110 )
7 楼
mov es,dx
mov eax,0x201
mov ecx,02h ;读第二扇区的原始MBR引导开机
mov edx,0x80
mov ebx,0x7
忘记写第一行了 我原来不知道啥意思就没黏贴上 这样是原来的代码
就是在MBR里想读取u盘的第二扇区 就不好使
能力值:
( LV2,RANK:10 )
8 楼
把 mov edx,0x80 这一行移除
在读取之前, 不要用 dx 即可.
(BIOS 会把 u盘 的代号放进 DX, 所以不用更动)
能力值:
( LV7,RANK:110 )
9 楼
能力值:
( LV2,RANK:10 )
10 楼
找了半天没找到 原来是结贴了..
问题解决了么?
能力值:
( LV7,RANK:110 )
11 楼
没解决 只能自己写MBR了
能力值:
( LV2,RANK:10 )
12 楼
我觉得应该不是MBR程序的问题 可能是USB启动盘的格式引起读取失败的
起初我也以为是int13的参数dl有问题,但是我在程序开始保存dl后(bios在运行mbr前会把磁盘信息存到dl),调用int 13时取出来仍然不行
后来我想到,usb启动盘在某些机器上因为写入格式不同会引起一些问题,我就逐步测试了每种格式
在我的机器上,测试结果是这样的
制作usb启动盘软件 写入格式 正常引导 加密引导
DiskGenius3.2.2010 USB-FDD 失败 失败
USB-HDD 成功 失败
USB-ZIP 成功 成功
UltraISO9.3.5.2716 USB-HDD 成功 失败
USB-ZIP 成功 成功
USB-HDD+ 成功 成功
USB-ZIP+ 成功 失败 其中USB-ZIP+加密引导失败是因为FAT BPB数据写在第一扇区,修改成加密MBR后造成U盘文件系统破坏,无法搜索U盘里的GRUB启动文件。实际上读取第二扇区的备份MBR还是成功的。
完全成功的只有USB-ZIP和USB-HDD+。
原MBR复制到第2扇区,第1扇区写入加密MBR,并复制原MBR的磁盘分区表到第一扇区,顺利进入GRUB引导菜单。
测试的时候加密MBR我没有做任何修改,U盘扇区复制和写入我图方便直接用的winhex。
虽然迟了点,但希望仍有所帮助。