Board logo

标题: 请教:用DEBUG命令如何读取大于1024柱面的内容? [打印本页]

作者: liuxiayun     时间: 2004-6-20 00:00    标题: 请教:用DEBUG命令如何读取大于1024柱面的内容?

请教:用DEBUG命令如何读取大于1024柱面的内容?
DOS的13号中断通过用CX和DX两个寄存器保存硬盘的扇区、磁头、柱面资料来直接读取物理扇区上的内容,但最多只能表示63个扇区255个磁头和1024个柱面即最多能读取8.4G的范围,而现在的大硬盘起码是几十个GB,肯定其柱面数超过1024,怎么直接用DOS下的DEBUG读取大于1024柱面的内容?请各位大虾指教,谢谢!!!
本人e-mail:liuxiayun@163.net

作者: gotomsdos     时间: 2004-6-21 00:00
DEBUG处理磁盘数据是以扇区论,跟柱面好象没有直接关系
比如,装载D盘第D3E5(HEX)扇区到内存0处,共200(512,DEC)各扇区
L 0 3 D3E5 200

硬盘参数是可以调整模式的
LBA模式下,大硬盘可有65536柱面,255磁头,63扇区,
老旧的普通模式下NORMAL,只支持1024柱面,16磁头,63扇区,这样DEBUG当然不能处理超过
1024柱面,好象DEBUG本身没有1024柱面的限制吧?












[此贴子已经被作者于2004-6-21 下午 06:35:27编辑过]



作者: liuxiayun     时间: 2004-6-21 00:00
楼上这位朋友说的是DEBUG的装载命令,这样读的是逻辑扇区。我想要问的是在DEBUG命令模式下,编写简单程序直接利用DOS的13号中断调用,直接读取磁盘上的绝对于扇区(某柱面、某磁头、某扇区),也即将扇区号存放在CX寄存器的CL中的低6位,将磁头号存放在CX的CH中,而将柱面号存放在DX的DH和CL的高2位(共有10位最多能表示1024个柱面),DL则存放软、硬盘标志(01、02为软盘,81、82等为硬盘)。现在的柱面数多于1024个,用10位已没法表示了,要利用DOS的13号中断调用直接读取物理扇区的话,1024个以上的柱面没法表示了,该怎样赋值读取。
作者: willsort     时间: 2004-6-23 00:00
Re liuxiayun:

  似乎可以使用扩展的INT13中断,子功能号分别是42h,43h,此中断使用的是新定义的地址LBA序列,具体资料可以再搜索引擎上查找。
作者: liuxiayun     时间: 2004-6-23 00:00
谢谢楼上这位朋友。不知是否还有更具体一些的资料提供,如哪一个子功能号是读命令、哪一个子功能号是写功能号?在参数调用时具体表示的意义等?
谢谢!!!
作者: liuxiayun     时间: 2004-6-26 00:00
四楼的朋友,我在GOOGLE上查了一段时间,总没查到具体的说明或操作。不知这位朋友可有更具体的一些内容赐告,谢谢!!