您的位置:首页 >>网安文摘 >>技术文摘 >>Dos >> 文章内容

FAT32 引导扇区代码

Google
 
[ 信息来源:西部网安 ] [ 发布时间:2007-07-25 ]

OFF_CREATE_TIME    EQU  14  ; 创建时间   WORD
OFF_CREATE_DATE    EQU  16  ; 创建时间   WORD
OFF_LAST_ACCESS_DATE  EQU  18  ; 上次访问时间  WORD
OFF_START_CLUSTER_HIGH  EQU  20  ; 起始簇号高位  WORD
OFF_LAST_UPDATE_TIME  EQU  22  ; 上次更新时间  WORD
OFF_LAST_UPDATE_DATE  EQU  24  ; 上次更新时间  WORD
OFF_START_CLUSTER_LOW  EQU  26  ; 起始簇号低位  WORD
OFF_FILE_SIZE    EQU  28  ; 文件尺寸   DWORD

; 相关常量
DIR_NAME_DELETED   EQU  0E5H ; 该项已经被删除
DIR_NAME_FREE    EQU  00H  ; 该项是空闲的(其后也是空闲的)
DIR_NAME_DOT    EQU  2EH  ; 特殊目录 . 或 ..
DIR_NAME_SPACE    EQU  20H  ; 不允许的字符
DIR_ENTRY_SIZE    EQU  32  ; 每个目录项的尺寸,其结构如上所示

;文件属性
DIR_ATTR_READONLY   EQU  01H  ; 只读文件
DIR_ATTR_HIDDEN    EQU  02H  ; 隐藏文件
DIR_ATTR_SYSTEM    EQU  04H  ; 系统文件
DIR_ATTR_VOLUME    EQU  08H  ; 卷标号(只可能出现在根目录中)
DIR_ATTR_SUBDIR    EQU  10H  ; 子目录
DIR_ATTR_ARCHIVE   EQU  20H  ; 归档属性
DIR_ATTR_LONGNAME   EQU  0FH  ; 长文件名
DIR_ATTR_LONGNAME_MASK  EQU  3FH  ; 长文件名掩码 你复制的文字来自西部网安

; 簇属性
CLUSTER_MASK    EQU  0FFFFFFFH ; 簇号掩码(FAT32=〉FAT28)
CLUSTER_FREE    EQU  00000000H ; 簇是空闲的
CLUSTER_RESERVED   EQU  00000001H ; 簇是保留的
CLUSTER_MIN_VALID   EQU  00000002H ; 最小有效簇号
CLUSTER_MAX_VALID   EQU  0FFFFFF6H ; 最大有效簇号
CLUSTER_BAD     EQU  0FFFFFF7H ; 坏簇
CLUSTER_LAST    EQU  0FFFFFF8H   ;0xFFFFFFF8-0xFFFFFFFF表示文件的最后一个簇

;====================================================================
;
; 启动扇区(512字节)
;
;====================================================================
_ENTRY_POINT:

; 3字节的跳转指令
 JMP SHORT _BOOT_CODE ; 跳转到真正的引导代码

网安官方站


 NOP       ; 空指令以保证字节数为3

; 8字节的OEMName
OEMName     DB “FDOS1.00“

;====================================================================
;
; BPB( BIOS Parameter Block )
;
;====================================================================
BytesPerSector   DW ? ; 每个扇区的字节数 (512 1024 2048 4096)
SectorsPerCluster  DB ? ; 每个簇的扇区数 ( 1 2 4 8 16 32 64 128 )
        ; 两者相乘不能超过32K(簇最大大小)
ReservedSectors   DW ? ; 从卷的第一个扇区开始的保留扇区数目;
        ; 该值不能为0,对于FAT12/FAT16,该值通常为1;
        ; 对于FAT32,典型值为32;

NumberOfFATs   DB ? ; 卷上FAT数据结构的数目,该值通常应为2
RootEntries    DW ? ; 对于FAT12/FAT16,该值表示32字节目录项的数目;
        ; 对于FAT32,该值必须为0;
NumberOfSectors16  DW ? ; 该卷上的扇区总数,该字段可以为0,如果该字段
        ; 为0,则NumberOfSectors32不能为0;对于FAT32,
        ; 该字段必须为0
MediaDescriptor   DB ? ; 介质类型
SectorsPerFAT16   DW ? ; 该字段标识一个FAT结构占有的扇区数(FAT12/FAT16),
        ; 对于FAT32卷,该字段必须为0;
SectorsPerTrack   DW ? ; 用于INT 0x13中断的每个磁道的扇区数
HeadsPerCylinder  DW ? ; 用于INT 0x13中断的每个柱面的磁头数

westsafe.net


HiddenSectors   DD ? ; 包含该FAT卷的分区之前的隐藏扇区数
NumberOfSectors32  DD ? ; 该字段包含该卷上的所有扇区数目,对于FAT32,该字段
        ; 不为0;FAT12/FAT16可根据实际大小是否超过65536个扇
        ; 区数决定是否采用该字段;

;====================================================================
;
; EBPB ( Extended BIOS Parameter Block )
;
;====================================================================
SectorsPerFAT32   DD ?   ; 对于FAT32,该字段包含一个FAT的大小,而SectorsPerFAT16
          ; 字段必须为0;
ExtFlags    DW ?   ; 标志
FSVersion    DW ?   ; 这是文件系统的版本,高字节为主版本,低字节为次版本;
RootDirectoryStart  DD ?   ; 根目录的起始簇号,通常为2;
FSInfoSector   DW ?   ; FSINFO结构在FAT32卷保留区域的扇区号
BackupBootSector  DW ?   ; 如果该字段不为0,则表示在保留区域保存的启动记录的扇区号
          ; 通常为6,不推荐其他值;
Reserved1 TIMES 12 DB ?   ; 保留字段,格式化程序应将该字段清0
DriveNumber    DB ?   ; 用于INT 0x13的驱动器号,0x00为软盘,0x80为硬盘
NTReserved    DB ?   ; 保留字节(用于Windows NT,即NTFS),对于FAT文件
          ; 系统,应始终为0
BootSignature   DB  29H   ; 扩展引导标志(值为0x29)
VolumeId    DD ?   ; 卷的序列号 你复制的文字来自西部网安
VolumeLabel  times 11   DB ?   ; 卷标号,该字段与根目录中的11字节卷标相同
          ; NASM目前尚不支持DUP语法
FileSystemType   DB ’FAT32   ’ ; 文件系统类型

;====================================================================
;
; 真正的启动代码从这开始( 偏移:0x3E )
; 其功能是搜索磁盘的根目录,查找FDOSLDR.BIN文件,将其读入内存并运行。
;
;====================================================================
_BOOT_CODE:

 ; 初始化相关寄存器及标志位
 CLI      ; 先关掉中断
 CLD      ; 方向为向前递增
 XOR  AX,AX   ; AX = 0
 MOV  DS,AX   ; 设置数据段寄存器 DS:SI
 MOV  ES,AX   ; 设置附加段寄存器 ES:DI

westsafe.net


 MOV  SS,AX   ; 设置堆栈段寄存器
 MOV  BP,7C00H  ; 设置基址寄存器
 MOV  SP,STACK_ADDR ; 设置堆栈栈顶
 STI      ; 允许中断

 ;====================================================================
 ; 保存启动的磁盘编号
 ;====================================================================
 MOV  [DriveNumber],DL; 该值由BIOS设置,如果是从USB启动,该值为0x80
       ; 即为第一个硬盘的编号,该值将用于后续的磁盘
       ; 读取调用

 ;====================================================================
 ; 准备FAT32文件系统常用的常数,以便后面的操作
 ;====================================================================
 ;
 ; [隐藏扇区][保留扇区][FAT][DATA]
 ;


 ;====================================================================

 ;====================================================================
 ; 检查是否支持磁盘中断INT 13H的扩展
 ;====================================================================
 MOV  BYTE [BP - DISK_EXT_SUPPORT],00H  ; 00H表示不支持磁盘扩展
 MOV  DL,[DriveNumber]
 MOV  AH,41H
 MOV  BX,055AAH
 INT  13H
 JC  _NO_DISK_EXTENSION      ; 如果失败,进位标志为1或者BX值不对( AA55 or 55AA )

 ; 设置磁盘支持扩展中断标志
共5页: 上一页 [1] 2 [3] [4] [5] 下一页

声明:西部网安刊登此文章是为了传递更多信息,文章内容仅供参考,转载请注明出处。   
 
    ·在线评论

评论列表

用户名: 新注册) 密码: 匿名评论

赞助展示链接
精彩图片
赛车版无间道 极品飞车12真人游戏截图 赛车版无间道 极品飞车12真人游
第十二代《极品飞车:卧底》(Need for Speed Undercover)是EA Black B
奥林巴斯E-520样张:美女花木衣世 奥林巴斯E-520样张:美女花木衣
奥林巴斯E-520是一款外形小巧、携带方便的数码单反相机,更是一款非常
全球最轻播放器之一 Cube D7美女图赏 全球最轻播放器之一 Cube D7美女
DCube D7十分小巧,其三围是59.53311mm ,重25克。受制机身的限制,D7
黑丝袜的诱惑 性感美女演绎台电T50+ 黑丝袜的诱惑 性感美女演绎台电T
台电T50+在前作的基础上加入了TV-OUT电视输出功能,采用WQVGA多点触摸
周杰伦大名远洋 成中国入选W3C规范第一人 周杰伦大名远洋 成中国入选W3C规
2008年8月29日,W3C的Web IDL工作草案正式发布,令人惊奇的是在规范说

版权所有 西部网安 Copyright(C) 2005-2008 All Rights Reserved.陕ICP备05009754号