无忧启动论坛

标题: echo -n > (hd0)+255 写硬盘扇区的疑问,不点大师来指点下 [打印本页]

作者: sgw888    时间: 2012-10-22 12:55
标题: echo -n > (hd0)+255 写硬盘扇区的疑问,不点大师来指点下
在GRUB4DOS的环境下,使用 echo -n > (hd0)+255 写硬盘扇区是成功的. 可以一次性清空 硬盘 (hd0) 的255个扇区.已经用CAT命令验证过了

GRUB4DOS应该是调用BIOS进行硬盘读写的吧? GRUB4DOS是调用INT 13H读写硬盘的吗?
我自己尝试用 扩展INT 13H写硬盘扇区时,一次性最大只能写入0X7F个扇区,超过这个值就会失败.

请问,这是为什么呢? G4D是调用的INT 13H吗? 还是有自己的方法?
作者: 不点    时间: 2012-10-22 16:02
抱歉,我对于 echo -n 还不太熟悉。

但是,(hd0)+255 确实是硬盘开头的 255 个扇区。

但 grub4dos 是把它当成一个文件来看待的,不管它有多少个扇区。即便有 1000000 个扇区,这种表示法就是一个文件。

grub4dos 可以读写文件,但不一定只是用一次 int13 来实现读写的。很可能是多次调用 int13 来读写的。

你怎么能够肯定 grub4dos 只是调用了一次 int13 就实现了 255 个扇区的写入呢?
作者: sgw888    时间: 2012-10-23 08:18
哦,多谢不点的回复. 我不能够肯定只是调用了一次INT 13就实现了255个扇区的写入,这只是猜想罢了,或者说是想当然的错误. 表面现象总是会让人迷惑的. 现在,我基本可以确定,INT 13并不能一次写太多的扇区. 可能最大值就是0X7F了.
作者: zhaohj    时间: 2012-10-23 08:48
扩展int 13H(ah=0x42(读)、0x43(写))没有你这个限制吧。
作者: sgw888    时间: 2012-10-23 09:29
我用的就是扩展INT 13H. 一次性最多成功写入 0X7F个扇区.  扩展INT 13H使用磁盘数据包,读写数据扇区数采用两个字节表示,但测试中,最多一次性写入0X7F个扇,实机祼机测试如此,VMWARE,DOS下测试也是如此.
作者: zhaohj    时间: 2012-10-23 09:43
哦,DMA有64kb限制。




欢迎光临 无忧启动论坛 (http://wuyou.net./) Powered by Discuz! X3.3