美文网首页
[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