阅读:3086回复:26
8.4G以上硬盘是如何访问的?
我只知LBA方式中,Cylinder最大为1024,最多可管理63*255*1024*512=8,422,686,720Byte 即8。4G大小硬盘。请问各位大虾8。4G以上是如何访问的??
谢谢! |
|
最新喜欢:![]()
|
沙发#
发布于: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,我就不多说了 |
|
板凳#
发布于:2002-05-09 22:43
请问INT42由BIOS还是M$供?
|
|
|
地板#
发布于:2002-05-09 23:19
引用:
/////////////////// 请问INT42由BIOS还是M$供? /////////////////// u_you 兄: 读大于8。4g为用扩展(extand)int13h中断,而非《INT42》, 该中断为较新的bios中都有提供。ah=41h为写,ah = 42h为读。 |
|
|
地下室#
发布于:2002-05-10 17:57
不好意思,我错了。
再请问buffer_addr 是 SEG:OFFSET 还是别的结构? 在实模式和保护模式有什么不同? |
|
|
5楼#
发布于:2002-05-10 18:18
在ABC初学者栏目里你的同一个问题我提供了扩展INT13的资料,去看看吧。
|
|
|
6楼#
发布于:2002-05-10 18:34
谢谢但我还是没见着Buffer 的结构??? :( :( :(
|
|
|
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. |
|
8楼#
发布于:2002-05-11 10:49
buffer_addr就是数据传输的32位地址,不含什么数据结构,以下是MSDN中的原文,你可以看看: 谢谢再问一下在WINDOWS所所谓的“平板式” 也是这样吗?可这里只有16BIT的OFFSET,如何确定4G的空间? 另请问在MSDN中如何找到这部分内容?我找了好久就是没有找到。 谢谢! |
|
|
9楼#
发布于:2002-05-11 11:51
你所说的大概是对内存空间的访问,在实模式下可调用INT15 或INT2F。保护模式下自有一套地址映射的方法,你可以参考一些将保护模式编程的书。
|
|
|
10楼#
发布于:2002-05-11 11:53
另外关于扩展INT13的问题一、两句话说不清楚。你若需要,我有现成的汇编代码。
|
|
|
11楼#
发布于:2002-05-11 16:01
Thanks!
u_you@sohu.com |
|
|
12楼#
发布于:2002-05-11 18:03
邮件已发出,收到后请回信或留言确认。
|
|
|
13楼#
发布于:2002-05-12 00:18
我这里有EXT INT13的部分英文说明,包括了!读写和控制,不知道你在哪里呢?可以的话你来复印一份吧!我在北京!
|
|
14楼#
发布于:2002-05-12 21:38
我这里有EXT INT13的部分英文说明,包括了!读写和控制,不知道你在哪里呢?可以的话你来复印一份吧!我在北京! 谢谢! 可我在深圳。 |
|
|
15楼#
发布于:2002-05-12 21:56
如果你不嫌麻烦直接操作IO好了!
我在《编程技巧于维护》上看到过! |
|
|
16楼#
发布于:2002-05-13 11:18
直接操作IO也可以,但必须考虑DMA请求的问题,否则速度之慢令人无法忍受。
|
|
|
17楼#
发布于:2002-05-13 11:24
faint,EXT INT13在装的全的MSDN或95/98DDK文档里很清楚,不用到处去找吧。
32位编程时你又不大可能用它,最好通过磁盘驱动访问,嫌麻烦就直接访问IDE接口吧,十分简单。此站上有较完全的接口规范,老点的规范支持28bit Address(128G,我的硬盘也就这样了),新的可支持48bit Addres。 |
|
18楼#
发布于:2002-05-13 21:02
那我就不清楚了,要不给我一个地址我给你邮过去吧!
|
|
19楼#
发布于:2002-05-14 21:40
faint,EXT INT13在装的全的MSDN或95/98DDK文档里很清楚,不用到处去找吧。 麻烦你好人做到 |
|
|
上一页
下一页