息来源:
硬盘结构简介:
很久以前, 硬盘的容量还非常小的时候,人们采用与软盘类似的结构生产硬盘.
也就是硬盘盘片的每一条磁道都具有相同的扇区数.
由此人们定义硬盘参数为(CHS)参数,即磁头数(Heads),柱面数(Cylinders),扇区数(Sectors),以及相应的寻址方式。
其中:
磁头数表示硬盘总共有几个磁头,也就是有几面盘片,{zd0}为255 (用8个二进制位存储);
柱面数表示硬盘每一面盘片上有几条磁道,
{zd0}为1023(用10个二进制位存储);
扇区数(Sectors)
表示每一条磁道上有几个扇区, {zd0}为63 (用6个二进制位存储);
每个扇区一般是
512个字节, 理论上讲这不是必须的, 但好象没有取别的值的;
所以磁盘{zd0}容量为:
255 * 1023 *
63 * 512 / 1048576 = 8024 GB ( 1M = 1048576 Bytes )
或硬盘厂商常用的单位:
255 * 1023 * 63 * 512 / 1000000 = 8414 GB ( 1M = 1000000 Bytes )
在 CHS 寻址方式中, 磁头, 柱面, 扇区的取值范围分别为 0 到 Heads – 1,0 到 Cylinders - 1,1
到 Sectors (注意是从 1 开始)
在老式硬盘中,由于每个磁道的扇区数相等,所以外道的记录密度要远低于内道,因此会浪费
很多磁盘空间 (与软盘一样)。为了解决这一问题,进一步提高硬盘容量,人们改用等密度结构生产
硬盘。也就是说,外圈磁道的扇区比内圈磁道多。采用这种结构后,硬盘不再具有实际的3D参数,
寻址方式也改为线性寻址,即以扇区为单位进行寻址。为了与使用3D寻址的老软件兼容在硬盘控
制器内部安装了一个地址翻译器。由它负责将老式3D参数翻译成新的线性参数。这也是为什么现
在硬盘的3D参数可以有多种选择的原因 (不同的工作模式, 对应不同的3D参数, 如 LBA, LARGE, NORMAL)。
基本INT 13H 调用简介:
BIOS INT 13H 调用是 BIOS 提供的磁盘基本输入输出中断调用, 它可以完成磁盘(包括硬盘和
软盘)的复位, 读写, 校验, 定位, 诊断, 格式化等功能.它使用的就是 CHS 寻址方式, 因此{zd0}识能访问 8 GB 左右的硬盘
INT13H调用中
AH=功能号
AL=扇区数
CH,CL=磁头号,扇区号
DH,DL=磁头号,驱动器号
ES:BX=数据缓冲区地址
功能号AH :0软盘系统复位
1读软盘状态 只有AH有效
返回AL=状态字节
2读磁盘
成功AH=0
失败 AH=错误代码
3写磁盘
成功AH=0
失败 AH=错误代码
4检验磁盘扇区(ES:BX不设置)
成功AH=0 失败
AH=错误代码
5格式化磁道
(ES:BX=磁道地址CH,CL不设置)成功AH=0
失败
AH=错误代码
8取磁盘参数 (只需设置AH,DL返回值方在CH,CL,DH中) 成功 AH=0
失败 AH=错误代码
扩展INT 13H 调用简介:
为了支持大于8G的硬盘,现在的主板BIOS提供了扩展INT
13H调用,它使用的是线性寻址方
式。
功能号AH: 41H 检测是否支持扩展INT 13H调用
BX=55AAH AH=0支持
42H 读磁盘扇区
DL=磁盘号
DS:SI=调用结构的地址
调用结构:
disk_addr_pkt
struc
packet_size
db 16 ;
结构长度通常为16 1字节
reserved
db
0 ; 保留 必须为0
1字节
block_count
dw
?
; 读取扇区数目
2字节
buffer_addr
dd
? ; 缓冲区地址 4字节
高2字节段址低2
节字偏移
block_num dq
?
;
读取的{jd1}扇区起始号8字节
disk_addr_pkt
ends
成功
AH=0
失败AH=错误代码。
43H 写磁盘扇区
DL=磁盘号
DS:SI=调用结构的地址
调用结构与读磁盘相同
成功 AH=0 失败AH=错误代码。
48H
取得磁盘参数
DL=磁盘号
DS:SI= 结果缓冲区
结构如下
info_size dw 26缓冲区长度 26
flags
硬盘结构简介:
其中:
255 * 1023 * 63 * 512 / 1000000 = 8414 GB ( 1M = 1000000 Bytes )
在 CHS 寻址方式中, 磁头, 柱面, 扇区的取值范围分别为 0 到 Heads – 1,0 到 Cylinders - 1,1
到 Sectors (注意是从 1 开始)
在老式硬盘中,由于每个磁道的扇区数相等,所以外道的记录密度要远低于内道,因此会浪费
很多磁盘空间 (与软盘一样)。为了解决这一问题,进一步提高硬盘容量,人们改用等密度结构生产
硬盘。也就是说,外圈磁道的扇区比内圈磁道多。采用这种结构后,硬盘不再具有实际的3D参数,
寻址方式也改为线性寻址,即以扇区为单位进行寻址。为了与使用3D寻址的老软件兼容在硬盘控
制器内部安装了一个地址翻译器。由它负责将老式3D参数翻译成新的线性参数。这也是为什么现
在硬盘的3D参数可以有多种选择的原因 (不同的工作模式, 对应不同的3D参数, 如 LBA, LARGE, NORMAL)。
基本INT 13H 调用简介:
BIOS INT 13H 调用是 BIOS 提供的磁盘基本输入输出中断调用, 它可以完成磁盘(包括硬盘和
软盘)的复位, 读写, 校验, 定位, 诊断, 格式化等功能.它使用的就是 CHS 寻址方式, 因此{zd0}识能访问 8 GB 左右的硬盘
INT13H调用中
功能号AH :0软盘系统复位
2读磁盘
8取磁盘参数 (只需设置AH,DL返回值方在CH,CL,DH中) 成功 AH=0
失败 AH=错误代码
扩展INT 13H 调用简介:
式。
功能号AH:
42H 读磁盘扇区
DL=磁盘号
DS:SI=调用结构的地址
调用结构:
disk_addr_pkt
packet_size
reserved
block_count
buffer_addr
节字偏移
block_num
disk_addr_pkt
成功
43H 写磁盘扇区
DL=磁盘号
DS:SI=调用结构的地址
成功 AH=0 失败AH=错误代码。
DL=磁盘号
DS:SI= 结果缓冲区
info_size
flags