阅读:1300回复:3
关于物理读写硬盘的疑惑???
远在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 保护模式下)读/写磁盘的物理根本原理还没完全弄明白,望能得到各位朋友的指点,谢谢!!! |
|
|
沙发#
发布于:2001-12-28 08:37
对ide口的硬盘,直接下ata命更直接、有效,无平台、环境之分。
|
|
|
板凳#
发布于:2001-12-28 12:25
那从稍上层的系统来看(无平台之分)它执行读/写功能是否还是调用BIOS Int13h呢?
|
|
|
地板#
发布于:2002-01-04 17:05
guan zhu
|
|
|