美文网首页
访问硬盘

访问硬盘

作者: 不要加香菜 | 来源:发表于2018-01-13 20:39 被阅读0次

    硬盘读写的基本单位是扇区。

    从硬盘读取数据的模式

    1. CHS 模式,向硬盘控制器分别发送磁头号、柱面号和扇区号(扇区在某个柱面上的编号)。
    2. LBA 模式,对所有扇区同一编址,称为逻辑扇区,提供逻辑扇区号访问。
      • LBA28,使用 28 个 bit 表示逻辑扇区号,每个扇区 512 B,总共可管理 128 GB 的硬盘。
      • LBA48,46 个 bit 表示逻辑扇区号,可管理 131072 TB 的硬盘容量。

    LBA28 访问硬盘

    主硬盘控制器具有 8 个端口,端口号从0x01f00x01f7

    1. 设置要读取的扇区数量

      • 端口号:0x01f2,表示读取的扇区数
    2. 设置起始 LBA 扇区号

      • 逻辑扇区编址方法 LBA28,用28位表示逻辑扇区号
      • 端口号:0x01f3,表示起始 LBA 扇区号 7~0 位
      • 端口号:0x01f4,表示起始 LBA 扇区号 15~8 位
      • 端口号:0x01f5,表示起始 LBA 扇区号 23~16 位
      • 端口号:0x01f6
        • 低 4 位表示起始 LBA 扇区号的 27~24 位
        • 第 4 位指示硬盘号,0表示主盘,1表示从盘
        • 高 3 位是“111”;第 6 位为 1:表示 LBA 模式,为 0:表示 CHS 模式
    3. 设置命令

      • 端口号:0x01f7,既是命令端口,又是状态端口
        • 当端口值为0x20时,表示读
    4. 等待读写操作完成

      • 端口号:0x01f7,硬盘读写期间此端口表示硬盘状态
        • 第 0 位,1表示前一个命令执行错误,具体原因见端口号:0x01f1
        • 第 3 位,1表示硬盘已准备好交换数据
        • 第 7 位,1表示硬盘忙
    5. 连续取出数据

      • 端口号:0x01f0,数据端口,这是一个 16 bit 端口。
    6. 错误信息

      • 端口号:0x01f1,包含硬盘驱动器最后一次执行命令后的状态,错误原因。

    参考

    1. 《x86汇编语言:从实模式到保护模式》 —— 李忠

    相关文章

      网友评论

          本文标题:访问硬盘

          本文链接:https://www.haomeiwen.com/subject/jpchoxtx.html