【发布时间】:2017-05-04 17:07:36
【问题描述】:
我正在创建一个基本的 MBR,它读取分区表并加载可引导分区的第一个扇区。我对 CHS 和 LBA 寻址模式感到困惑。我在一个教程中读到除了兼容性原因外,CHS 或多或少都没有使用。 所以,我选择使用 LBA(INT 13h 扩展)。要加载驱动器的扇区,我必须从该分区的分区表中读取 CHS 值。只有这样我才能将其转换为 LBA 并将其存储在“磁盘地址包”中。
我的疑问是,分区表中的 CHS 每个是 1 个字节。我应该直接取这个值并将其转换为 LBA(或)我必须先将其转换为,
Cylinder = 10 bits
Sector = 6 bits
Head = 8 bits
然后转换成LBA?
注意:我的 MBR 必须能够访问 HDD 和 USB 上的扇区 - 这就是动机。
操作系统:Ubuntu
汇编器:气体
【问题讨论】:
-
是的,你需要做 10 位/6 位的事情。见osdev wiki。
-
再一次,最终的 CHS 将是每个 ri8 1 字节?
标签: assembly operating-system kernel x86-16 mbr