【发布时间】:2019-12-05 06:00:52
【问题描述】:
我正在尝试创建自己的非常基本的操作系统,并且我正在尝试弄清楚磁盘的写入和读取是如何工作的。 我使用this website 作为参考。
如果每个磁道的扇区数为 17,为什么 AL 会上升到 128? 如果我将 AL 设置为 20,将 CL 设置为 1 并写入一个 (512 * 19) 字节的字符串,因为第 18 和 19 扇区不存在,那么最后的 1024 字节将去哪里?
【问题讨论】:
-
它将转到下一个磁头的扇区 1,然后是下一个柱面。阅读c/h/s disk geometry。此外,如果可能,请使用 LBA。
-
@Jester 假设 SPT 为 18,可能在一张可能不支持扩展磁盘功能/LBA 的软盘上(尽管其他类型的驱动器会支持它-CDROM/硬盘等)。多轨不能保证在真实硬件上跨柱面边界工作,尽管模拟器要宽容得多。
-
虽然大多数软盘介质是每磁道 18 和 9 个扇区,但也可以有更多(微软的 MDF 格式是每磁道 21 个扇区),并且硬盘上每磁道的扇区数可以更高.写入(或读取)的扇区数限制为 128 与 PC 上的 x86 20 位段:偏移分段(在实模式下)有关。一个段可以寻址 64KiB(65336 字节)。 128 * 512(每扇区字节)= 65536。
-
该文档似乎有误。扇区号可以是 1 到 63(含),而不是 1 到 17(含)。每个磁道有 18 个扇区的磁盘将允许 1 到 18(含)之间的值
标签: assembly x86-16 bios osdev