中国DOS联盟论坛

中国DOS联盟

-- 联合DOS 推动DOS 发展DOS --
联盟域名:www.cn-dos.net 论坛域名:www.cn-dos.net/forum
游客 | 登录 | 注册 | 会员 | 搜索 | 中国DOS联盟
中国DOS联盟论坛
现在时间是 2026-09-15 04:56
47,812 主题排行 / 349,917 发帖 / 今日 0 篇 / 48,268 会员排行
DOS开发编程 & 发展交流 (开发室) » 如何用汇编读写大于1024磁道的大容量硬盘?[注意]
可打印版本  1,044 / 1
第1楼 yyuan_sh 发表于 2003-06-30 00:00
初级用户 发帖 14 积分 161
如何用汇编读写大于1024磁道的大容量硬盘?[注意]
谁知道如何用汇编读写大于1024磁道的大容量硬盘?即扩展的int 13h功能调用。
第2楼 qb45 发表于 2003-09-15 00:00
高级用户 发帖 194 积分 677
首先感谢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容量的限制。
[ 联系联盟系统管理团队 - 中国DOS联盟 - 标准版 ]
Sponsored by ifanr Inc | © 2001–2023