中国DOS联盟

-- 联合DOS 推动DOS 发展DOS --

联盟域名:www.cn-dos.net 论坛域名:www.cn-dos.net/forum
DOS,代表着自由开放与发展,我们努力起来,学习FreeDOS和Linux的自由开放与GNU精神,共同创造和发展美好的自由与GNU GPL世界吧!

中国DOS联盟论坛
现在时间是 2026-08-01 01:16
中国DOS联盟论坛 » DOS开发编程 & 发展交流 (开发室) » 如何用汇编读写大于1024磁道的大容量硬盘?[注意] 查看 973 回复 1
楼 主 如何用汇编读写大于1024磁道的大容量硬盘?[注意] 发表于 2003-06-30 00:00 ·  中国 上海 静安区 电信
初级用户
积分 161
发帖 14
注册 2003-06-04 00:00
23年会员
UID 3453
性别 男
状态 离线
谁知道如何用汇编读写大于1024磁道的大容量硬盘?即扩展的int 13h功能调用。
2 发表于 2003-09-15 00:00 ·  中国 湖北 宜昌 电信
高级用户
★★
积分 677
发帖 194
注册 2003-09-13 00:00
22年会员
UID 9778
性别 男
状态 离线
首先感谢ATLaS,在他告诉我的网址里找到了扩展INT13的详细资料,
读AH=42H、写AH=43H、取磁盘参数AH=48、DS:SI=数据包(而不采用寄存器)
相关知识:
我们知道硬盘的容量和扇区都是由三个数值决定,它们分别是柱面数(Cylinder)、磁头数(Head)、扇区数(Sector),简称CHS。ATA规范规定的接口CHS寄存器配置是28bit,也就是C:16bit;H:8bit;S:4bit。我们应该记得很多年前的8.4GB硬盘限制的问题吧,那时候的操作系统访问硬盘需要通过DOS下的INT13 API接口,虽然硬盘的CHS寄存器是28bit,但是瓶颈在于INT13 API的C:10bit;H:8bit;S:6bit,这样能访问的最大容量也就是210×28×(26-1)=16515072个扇区,第一个扇区不能为0,所以减去1。每扇区是512字节,所以最大容量就是8.46 GB(硬盘厂商都是以1000为换算单位),这样就产生了8.4容量的限制。
论坛跳转: