美文网首页
[OS64位][009]源码阅读:代码清单3-9 根据FAT表项

[OS64位][009]源码阅读:代码清单3-9 根据FAT表项

作者: AkuRinbu | 来源:发表于2019-05-05 17:54 被阅读0次

    学习笔记

    使用教材(配书源码以及使用方法)
    《一个64位操作系统的设计与实现》
    http://www.ituring.com.cn/book/2450
    https://www.jianshu.com/p/28f9713a9171

    勘误

    勘误

    代码清单3-9 (程序3-2 boot.asm)

    • line :232 ~ 273 : Func_GetFATEntry 根据 FAT表项号N 计算出下一个FAT表项的索引号 FAT[N]
    • 传入参数:AX=FAT 表项号 N
    • 传出参数:AX=FAT[N]
    代码清单 3-9 根据表项号N计算下一个表项号FAT[N].png

    1、根据字节数计算出,扇区号以及偏移地址:

    代码清单3-9 各种乘法除法运算的物理意义 举例说明.png
    FAT12 entry location:
    FAT表项的偏移扇区号 = 保留扇区数 + N*1.5 / 每扇区字节数  <- 取商值
       ThisFATSecNum = BPB_ResvdSecCnt + ((N + (N / 2)) / BPB_BytsPerSec);
       
     FAT表项在扇区中的偏移位置 = N*1.5 % 每扇区字节数   <- 取余数
        ThisFATEntOffset = (N + (N / 2)) % BPB_BytsPerSec;
    

    2、从软盘扇区到内存,扇区号与偏移地址的作用:

    代码清单 3-9 根据表项号N的奇偶性读取数据.png
    如果 某个表项 i 的下一个表项号 FAT[i]位于
    软盘扇区  X扇区 开始的 偏移地址Y 处,
    
    那么在调用软盘读取过程之后,
    FAT[i] 就会位于内存地址ES:BX 开始的 偏移地址Y 处,
    
    也就是它的内存地址是 ES:BX + Y,
    
    也就是说,扇区号X只用在软盘读取扇区时、之后就不用了,
    
    之后会继续用到的是 偏移地址Y(字节数)
    

    参考资料

    [OS64位][008]软盘文件系统分配图:根目录项结构、FAT表项结构
    https://www.jianshu.com/p/2290e05af3f2

    [032][汇编语言]div除法指令
    https://www.jianshu.com/p/211cf4edd4d3

    [044][汇编语言]mul指令 乘法指令
    https://www.jianshu.com/p/76ed79d0a7a0

    [008][汇编语言] mov [0],cs 段地址寄存器 到 内存单元
    寄存器的高位与地位、内存单元的高地址与低地址https://www.jianshu.com/p/8a8f46154941

    相关文章

      网友评论

          本文标题:[OS64位][009]源码阅读:代码清单3-9 根据FAT表项

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