无忧启动论坛

 找回密码
 注册
搜索
系统gho:最纯净好用系统下载站投放广告、加入VIP会员,请联系 微信:wuyouceo
查看: 2901|回复: 5
打印 上一主题 下一主题

[求助] echo -n > (hd0)+255 写硬盘扇区的疑问,不点大师来指点下

[复制链接]
跳转到指定楼层
1#
发表于 2012-10-22 12:55:01 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
在GRUB4DOS的环境下,使用 echo -n > (hd0)+255 写硬盘扇区是成功的. 可以一次性清空 硬盘 (hd0) 的255个扇区.已经用CAT命令验证过了

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

请问,这是为什么呢? G4D是调用的INT 13H吗? 还是有自己的方法?
2#
发表于 2012-10-22 16:02:37 | 只看该作者
抱歉,我对于 echo -n 还不太熟悉。

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

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

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

你怎么能够肯定 grub4dos 只是调用了一次 int13 就实现了 255 个扇区的写入呢?
回复

使用道具 举报

3#
 楼主| 发表于 2012-10-23 08:18:10 | 只看该作者
哦,多谢不点的回复. 我不能够肯定只是调用了一次INT 13就实现了255个扇区的写入,这只是猜想罢了,或者说是想当然的错误. 表面现象总是会让人迷惑的. 现在,我基本可以确定,INT 13并不能一次写太多的扇区. 可能最大值就是0X7F了.
回复

使用道具 举报

4#
发表于 2012-10-23 08:48:12 | 只看该作者
扩展int 13H(ah=0x42(读)、0x43(写))没有你这个限制吧。
回复

使用道具 举报

5#
 楼主| 发表于 2012-10-23 09:29:13 | 只看该作者
我用的就是扩展INT 13H. 一次性最多成功写入 0X7F个扇区.  扩展INT 13H使用磁盘数据包,读写数据扇区数采用两个字节表示,但测试中,最多一次性写入0X7F个扇,实机祼机测试如此,VMWARE,DOS下测试也是如此.
回复

使用道具 举报

6#
发表于 2012-10-23 09:43:24 | 只看该作者
哦,DMA有64kb限制。
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 注册

本版积分规则

小黑屋|手机版|Archiver|捐助支持|无忧启动 ( 闽ICP备05002490号-1 )

闽公网安备 35020302032614号

GMT+8, 2024-11-16 10:25

Powered by Discuz! X3.3

© 2001-2017 Comsenz Inc.

快速回复 返回顶部 返回列表