当前位置: 代码迷 >> 汇编语言 >> 大大帮小弟我看看这个boot加载前几段代码的含义
  详细解决方案

大大帮小弟我看看这个boot加载前几段代码的含义

热度:121   发布时间:2016-05-02 04:34:20.0
【求助】大大帮我看看这个boot加载前几段代码的含义
跟着于渊的 boot.asm 写了一次,加载内存前有这一段看不明白,求大大们讲解下
boot在软盘中找到 kernel.bin文件后 就跳到这里
RootDirSector是根目录占的扇区数,DeltaSectorNo是什么?
and  di, 0FFE0H
add  di, 01AH    
01AH的定义是DIR_FstClus  0x1A   2    此条目对应的开始簇号
es中的值是 0x9000h ,后面几句都作什么 , 最后ax中保存的是什么值


RootDirSector        equ    14
DeltaSectorNo       equ    17 
_filename_found_:
    mov  ax, RootDirSector
    and  di, 0FFE0H    ;
    add  di, 01AH      ; first sector
    mov  cx, word [es:di]  
    push cx             ; save  fat sector number
    add  cx, ax
    add  cx, DeltaSectorNo   ; "LOADER.BIN" staring sector number from  zero  after carculating
    mov  ax, BaseOfLoader
    mov  es, ax
    mov  bx, OffsetLoader
    mov  ax, cx  


------解决方案--------------------
看那个注释,说是 LOADER.BIN 文件的起始扇区,被又是被 equ 定义的,有些奇怪;整个的计算方法里对些变量的定义和使用都有类似的怪异。
好像没有必要纠结在这样的自行设计的有些特立独行意味的东西里,真想看看这方面的内容的话,一份软盘标准的引导扇区的代码和其所涉及的磁盘参数结构块定义是更好的选择。
  相关解决方案