gpt4 book ai didi

assembly - 在 ISO 9660 文件系统上加载文件

转载 作者:行者123 更新时间:2023-12-05 00:00:41 25 4
gpt4 key购买 nike

我刚看完 this关于在 ISO 9660 文件系统上读取文件的文章,我对如何将文件读入内存感到困惑。我知道根目录位于 PVD ​​的偏移 156 处,我将如何使用它来查找位于根目录中的文件,一旦找到文件名,我将如何找到该文件所在的地址,这样我就可以将它加载到内存中(使用 int 0x13 AH=42)?

最佳答案

BIOS 可能无法通过 int 13h 直接访问 CD 驱动器,只有软盘和 HDD 始终可以通过 int 13h 直接访问。如果您从 CD 启动(如果您的 BIOS 支持),您可以使用 int 13h 来访问 CD,但唯一可以保证工作的选项是仿真模式,在该模式下您将不会访问整个 CD ,但启动镜像就好像它是 FDD 或 HDD(在这种情况下,BIOS 通常将驱动器编号 0 或 80h 分配给模拟磁盘 AKA A:C:)。这个问题有讨论here .

您可能需要编写一个 CD 驱动程序来直接使用 I/O 端口从中读取数据。

至于ISO9660,你需要阅读Directory entry for the root directory来自 Primary Volume Descriptor (位于偏移 156 处)。那么您对Location of extent (LBA)感兴趣(偏移量 2)和 Data length (size of extent) (偏移 10)来自 Directory entry for the root directory .这些告诉您目录数据(文件/目录列表)所在的位置以及它有多大。

该列表基本上是长度可变的相同目录条目的列表(由于可变文件/目录名称长度和填充)。阅读时需要看File flags每个条目以确定它是文件还是目录。如果它是一个目录并且您想访问它,则递归地重复整个过程。如果是文件,Location of extent (LBA) (偏移量 2)和 Data length (size of extent) (offset 10) 告诉你它在哪里,有多大。

希望我没有搞砸,因为我手头没有旧的 CD 代码。

哦,请注意,以上是对如何阅读 CD、大多数 CD,但不是全部 CD 的非常简化的描述。 FS 是不必要的通用和复杂,并且有许多功能和选项使其难以在所有情况下正确阅读。

建议你弄几条.iso文件、十六进制编辑器和计算器,并仔细检查逻辑并更好地熟悉文件系统。

关于assembly - 在 ISO 9660 文件系统上加载文件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9731323/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com