Tom_lyd
驱动大牛
驱动大牛
  • 注册日期2001-09-02
  • 最后登录2016-01-09
  • 粉丝0
  • 关注0
  • 积分10分
  • 威望1点
  • 贡献值0点
  • 好评度1点
  • 原创分0分
  • 专家分0分
阅读:1300回复:3

关于物理读写硬盘的疑惑???

楼主#
更多 发布于:2001-12-26 10:42
远在DOS年代,执行磁盘的读写操作归根结底都是通过如下的方式
mov ah,2(read)/3(write)
mov al,要写的扇区数
mov cx,起始扇区
mov dx,80(硬盘)/0(floppy)
int 13
当硬盘的空间一度增大到超过8.4G时,传统的BIOS int 13h已经不能访问到大于8.4的空间了。于是乎 Extention BIOS应运而出,新的扩展int 13h不再通过寄存器传参数而代之以一个参数包,包的大小可以大至10h字节不等,并以DS:SI的值指向这个包。于是就成了
mov ds,seg Package
mov si,offset package
mov ax,4200h(read)/4300h(write)
int 13h
这样就解决了8.4G以上的硬盘不能识别的问题。但到此为至,所有的对硬盘的操作还是16位的。
到了windows win32时代,对硬盘的读写也变成了32位的,这样的传统的读/写盘中断int 13h又不能适应,于是又推出了win32环境下的32位的读/写盘方法。这就是为什么DOS下的关于拦截磁盘读写操作的TSR不能在win32 下工作的原因。当然你可以禁止(通过某些设置)这项功能而继续沿用老的16位磁盘操作。
以上是我的一点总结,但我对32位环境下(windows 保护模式下)读/写磁盘的物理根本原理还没完全弄明白,望能得到各位朋友的指点,谢谢!!!


 

Tom_lyd
matt
驱动中牛
驱动中牛
  • 注册日期2001-07-24
  • 最后登录2016-02-25
  • 粉丝0
  • 关注0
  • 积分0分
  • 威望0点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
沙发#
发布于:2001-12-28 08:37
对ide口的硬盘,直接下ata命更直接、有效,无平台、环境之分。
System Internals http://sys.xiloo.com
Tom_lyd
驱动大牛
驱动大牛
  • 注册日期2001-09-02
  • 最后登录2016-01-09
  • 粉丝0
  • 关注0
  • 积分10分
  • 威望1点
  • 贡献值0点
  • 好评度1点
  • 原创分0分
  • 专家分0分
板凳#
发布于:2001-12-28 12:25
那从稍上层的系统来看(无平台之分)它执行读/写功能是否还是调用BIOS Int13h呢?
Tom_lyd
wbsyqm
驱动牛犊
驱动牛犊
  • 注册日期2001-10-15
  • 最后登录2002-03-22
  • 粉丝0
  • 关注0
  • 积分0分
  • 威望0点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
地板#
发布于:2002-01-04 17:05
guan zhu
知识领导世界潮流
游客

返回顶部