u_you
驱动中牛
驱动中牛
  • 注册日期2002-04-11
  • 最后登录2010-03-05
  • 粉丝0
  • 关注0
  • 积分19分
  • 威望3点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
阅读:3082回复:26

8.4G以上硬盘是如何访问的?

楼主#
更多 发布于:2002-05-09 20:59
我只知LBA方式中,Cylinder最大为1024,最多可管理63*255*1024*512=8,422,686,720Byte 即8。4G大小硬盘。请问各位大虾8。4G以上是如何访问的??
谢谢!

最新喜欢:

aasa2aasa2
狼,食肉目犬科犬属。外形和狼狗相似。 有狗的忠诚,但无狗的奴性。 [img]http://www.driverdevelop.com/forum/avatar/u_you_wolf.jpg[/img]
yanghui
驱动牛犊
驱动牛犊
  • 注册日期2002-01-29
  • 最后登录2009-10-29
  • 粉丝0
  • 关注0
  • 积分0分
  • 威望0点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
沙发#
发布于:2002-05-09 21:41
实际上LBA模式不再采用CHS方式访问硬盘,而是直接按扇区来访问,即硬盘上的每一个扇区都有一唯一的地址编号,这就是为何称为
Logic Block Addressing ,这里的Logic Block就是指的扇区,具体到编程就是采用扩展INT13函数,以下是扩展读的调用方法:
Entry:
    AH = 42h
    DL = Drive number
    DS:SI = Disk address packet

Exit:
    carry clear
       AH = 0
    carry set
       AH = error code
其中Disk address packet的数据结构是这样的:
disk_addr_pkt   struc
    packet_size     db     16       ; 封包大小,固定为16bytes
    reserved        db      0       ; 保留,必须为零
    block_count     dw      ?       ; 待读的扇区数
    buffer_addr     dd      ?       ; 数据缓冲区的地址
    block_num       dq      ?       ; 扇区号,从零开始,即0柱面0磁头1扇区编号为0,后面依次类推
disk_addr_pkt   ends
你可以看到,扇区地址用64位二进制表示,你算算就知道采用LBA方式可以访问多大的硬盘了,如要了解更多的相关信息,可参考MSDN,我就不多说了
u_you
驱动中牛
驱动中牛
  • 注册日期2002-04-11
  • 最后登录2010-03-05
  • 粉丝0
  • 关注0
  • 积分19分
  • 威望3点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
板凳#
发布于:2002-05-09 22:43
请问INT42由BIOS还是M$供?
狼,食肉目犬科犬属。外形和狼狗相似。 有狗的忠诚,但无狗的奴性。 [img]http://www.driverdevelop.com/forum/avatar/u_you_wolf.jpg[/img]
magicx
驱动老牛
驱动老牛
  • 注册日期2002-02-22
  • 最后登录2014-08-18
  • 粉丝1
  • 关注0
  • 积分-14分
  • 威望13点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
地板#
发布于:2002-05-09 23:19
引用:
///////////////////
请问INT42由BIOS还是M$供?
///////////////////

u_you 兄:
 
读大于8。4g为用扩展(extand)int13h中断,而非《INT42》,
该中断为较新的bios中都有提供。ah=41h为写,ah = 42h为读。

 

[color=red]大头鬼! :P[/color]
u_you
驱动中牛
驱动中牛
  • 注册日期2002-04-11
  • 最后登录2010-03-05
  • 粉丝0
  • 关注0
  • 积分19分
  • 威望3点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
地下室#
发布于:2002-05-10 17:57
不好意思,我错了。
再请问buffer_addr 是 SEG:OFFSET 还是别的结构?
在实模式和保护模式有什么不同?
狼,食肉目犬科犬属。外形和狼狗相似。 有狗的忠诚,但无狗的奴性。 [img]http://www.driverdevelop.com/forum/avatar/u_you_wolf.jpg[/img]
shyeagle
驱动老牛
驱动老牛
  • 注册日期2002-04-30
  • 最后登录2007-07-31
  • 粉丝1
  • 关注1
  • 积分0分
  • 威望0点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
5楼#
发布于:2002-05-10 18:18
在ABC初学者栏目里你的同一个问题我提供了扩展INT13的资料,去看看吧。
[url=http://www.01study.com]01空间网[/url] [url=http://www.01study.com/forum/dispbbs.asp?boardID=73&ID=193&skin=0]版主招募[/url] [img]http://shy2003.vip.sina.com/map/yjs.gif[/img]
u_you
驱动中牛
驱动中牛
  • 注册日期2002-04-11
  • 最后登录2010-03-05
  • 粉丝0
  • 关注0
  • 积分19分
  • 威望3点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
6楼#
发布于:2002-05-10 18:34
谢谢但我还是没见着Buffer 的结构??? :( :( :(
狼,食肉目犬科犬属。外形和狼狗相似。 有狗的忠诚,但无狗的奴性。 [img]http://www.driverdevelop.com/forum/avatar/u_you_wolf.jpg[/img]
yanghui
驱动牛犊
驱动牛犊
  • 注册日期2002-01-29
  • 最后登录2009-10-29
  • 粉丝0
  • 关注0
  • 积分0分
  • 威望0点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
7楼#
发布于:2002-05-10 21:42
buffer_addr就是数据传输的32位地址,不含什么数据结构,以下是MSDN中的原文,你可以看看:

The buffer address is the 32-bit (segment:offset) address of the buffer to transfer data to or from.
u_you
驱动中牛
驱动中牛
  • 注册日期2002-04-11
  • 最后登录2010-03-05
  • 粉丝0
  • 关注0
  • 积分19分
  • 威望3点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
8楼#
发布于:2002-05-11 10:49
buffer_addr就是数据传输的32位地址,不含什么数据结构,以下是MSDN中的原文,你可以看看:

The buffer address is the 32-bit (segment:offset) address of the buffer to transfer data to or from.
 

谢谢再问一下在WINDOWS所所谓的“平板式”
也是这样吗?可这里只有16BIT的OFFSET,如何确定4G的空间?
另请问在MSDN中如何找到这部分内容?我找了好久就是没有找到。
谢谢!
狼,食肉目犬科犬属。外形和狼狗相似。 有狗的忠诚,但无狗的奴性。 [img]http://www.driverdevelop.com/forum/avatar/u_you_wolf.jpg[/img]
shyeagle
驱动老牛
驱动老牛
  • 注册日期2002-04-30
  • 最后登录2007-07-31
  • 粉丝1
  • 关注1
  • 积分0分
  • 威望0点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
9楼#
发布于:2002-05-11 11:51
你所说的大概是对内存空间的访问,在实模式下可调用INT15 或INT2F。保护模式下自有一套地址映射的方法,你可以参考一些将保护模式编程的书。
[url=http://www.01study.com]01空间网[/url] [url=http://www.01study.com/forum/dispbbs.asp?boardID=73&ID=193&skin=0]版主招募[/url] [img]http://shy2003.vip.sina.com/map/yjs.gif[/img]
shyeagle
驱动老牛
驱动老牛
  • 注册日期2002-04-30
  • 最后登录2007-07-31
  • 粉丝1
  • 关注1
  • 积分0分
  • 威望0点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
10楼#
发布于:2002-05-11 11:53
另外关于扩展INT13的问题一、两句话说不清楚。你若需要,我有现成的汇编代码。
[url=http://www.01study.com]01空间网[/url] [url=http://www.01study.com/forum/dispbbs.asp?boardID=73&ID=193&skin=0]版主招募[/url] [img]http://shy2003.vip.sina.com/map/yjs.gif[/img]
u_you
驱动中牛
驱动中牛
  • 注册日期2002-04-11
  • 最后登录2010-03-05
  • 粉丝0
  • 关注0
  • 积分19分
  • 威望3点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
11楼#
发布于:2002-05-11 16:01
Thanks!

u_you@sohu.com
狼,食肉目犬科犬属。外形和狼狗相似。 有狗的忠诚,但无狗的奴性。 [img]http://www.driverdevelop.com/forum/avatar/u_you_wolf.jpg[/img]
shyeagle
驱动老牛
驱动老牛
  • 注册日期2002-04-30
  • 最后登录2007-07-31
  • 粉丝1
  • 关注1
  • 积分0分
  • 威望0点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
12楼#
发布于:2002-05-11 18:03
邮件已发出,收到后请回信或留言确认。
[url=http://www.01study.com]01空间网[/url] [url=http://www.01study.com/forum/dispbbs.asp?boardID=73&ID=193&skin=0]版主招募[/url] [img]http://shy2003.vip.sina.com/map/yjs.gif[/img]
guardee
驱动巨牛
驱动巨牛
  • 注册日期2002-11-08
  • 最后登录2010-05-29
  • 粉丝2
  • 关注1
  • 积分2分
  • 威望34点
  • 贡献值0点
  • 好评度6点
  • 原创分0分
  • 专家分0分
13楼#
发布于:2002-05-12 00:18
我这里有EXT INT13的部分英文说明,包括了!读写和控制,不知道你在哪里呢?可以的话你来复印一份吧!我在北京!
u_you
驱动中牛
驱动中牛
  • 注册日期2002-04-11
  • 最后登录2010-03-05
  • 粉丝0
  • 关注0
  • 积分19分
  • 威望3点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
14楼#
发布于:2002-05-12 21:38
我这里有EXT INT13的部分英文说明,包括了!读写和控制,不知道你在哪里呢?可以的话你来复印一份吧!我在北京!

谢谢!
可我在深圳。
狼,食肉目犬科犬属。外形和狼狗相似。 有狗的忠诚,但无狗的奴性。 [img]http://www.driverdevelop.com/forum/avatar/u_you_wolf.jpg[/img]
流氓兔
驱动老牛
驱动老牛
  • 注册日期2001-06-27
  • 最后登录2005-02-28
  • 粉丝0
  • 关注0
  • 积分1分
  • 威望1点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
15楼#
发布于:2002-05-12 21:56
如果你不嫌麻烦直接操作IO好了!
我在《编程技巧于维护》上看到过!
我是流氓!!!我怕谁!!! 不!!应该是我是老流氓!!!我怕谁!!![img]http://202.98.116.70:888/cgi-bin/newmov/bbs/attachment.cgi?forum=4&topic=25473&postno=1&type=.jpg[/img]
shyeagle
驱动老牛
驱动老牛
  • 注册日期2002-04-30
  • 最后登录2007-07-31
  • 粉丝1
  • 关注1
  • 积分0分
  • 威望0点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
16楼#
发布于:2002-05-13 11:18
直接操作IO也可以,但必须考虑DMA请求的问题,否则速度之慢令人无法忍受。
[url=http://www.01study.com]01空间网[/url] [url=http://www.01study.com/forum/dispbbs.asp?boardID=73&ID=193&skin=0]版主招募[/url] [img]http://shy2003.vip.sina.com/map/yjs.gif[/img]
pjf
pjf
驱动中牛
驱动中牛
  • 注册日期2001-07-08
  • 最后登录2006-10-23
  • 粉丝0
  • 关注0
  • 积分42分
  • 威望4点
  • 贡献值0点
  • 好评度4点
  • 原创分0分
  • 专家分0分
17楼#
发布于:2002-05-13 11:24
faint,EXT INT13在装的全的MSDN或95/98DDK文档里很清楚,不用到处去找吧。
32位编程时你又不大可能用它,最好通过磁盘驱动访问,嫌麻烦就直接访问IDE接口吧,十分简单。此站上有较完全的接口规范,老点的规范支持28bit Address(128G,我的硬盘也就这样了),新的可支持48bit Addres。
guardee
驱动巨牛
驱动巨牛
  • 注册日期2002-11-08
  • 最后登录2010-05-29
  • 粉丝2
  • 关注1
  • 积分2分
  • 威望34点
  • 贡献值0点
  • 好评度6点
  • 原创分0分
  • 专家分0分
18楼#
发布于:2002-05-13 21:02
那我就不清楚了,要不给我一个地址我给你邮过去吧!
u_you
驱动中牛
驱动中牛
  • 注册日期2002-04-11
  • 最后登录2010-03-05
  • 粉丝0
  • 关注0
  • 积分19分
  • 威望3点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
19楼#
发布于:2002-05-14 21:40
faint,EXT INT13在装的全的MSDN或95/98DDK文档里很清楚,不用到处去找吧。
32位编程时你又不大可能用它,最好通过磁盘驱动访问,嫌麻烦就直接访问IDE接口吧,十分简单。此站上有较完全的接口规范,老点的规范支持28bit Address(128G,我的硬盘也就这样了),新的可支持48bit Addres。

麻烦你好人做到
狼,食肉目犬科犬属。外形和狼狗相似。 有狗的忠诚,但无狗的奴性。 [img]http://www.driverdevelop.com/forum/avatar/u_you_wolf.jpg[/img]
上一页
游客

返回顶部