《2022年操作系统原理实验复习考试.docx》由会员分享,可在线阅读,更多相关《2022年操作系统原理实验复习考试.docx(73页珍藏版)》请在taowenge.com淘文阁网|工程机械CAD图纸|机械工程制图|CAD装配图下载|SolidWorks_CaTia_CAD_UG_PROE_设计图分享下载上搜索。
1、精选学习资料 - - - - - - - - - 操作系统原理试验笔试复习重点与考试要求成果运算 :平常 40 分 考勤问答( 5 分) + 平常作业( 15 分) + 大作业( 20 分) + 期末 60 分 笔试( 30 分) + 操作( 30 分) = 100 分考试形式: 开卷笔试(可以带电脑)考试时间: 20XX 年 6 月 10 日(周日)下午 2:304:30 考试地点 :东新区教学楼B203(信安 /网工)和 B204(计科)题型: 填空( 15 题,每题 2 分,共 30 分)、问答( 6 题,每题 5 分,共 30 分)、编程( 4 题,每题 10 分,共 40 分)1 试
2、验环境与引导参见“01 操作系统的试验环境与引导.doc” 和“03FAT 文件系统与文件装载.doc” 中的3.1 和 2.3;1.1 环境1.1.1 基本环境硬件平台: PC 机( IA-32 )操作系统: Windows XP/7 、虚拟机中的 Linux ( Ubuntu)虚拟机:Virtual PC (已剔除)VMware (Ubuntu 、编程)Bochs(测试)在 VMware 中创建 Ubuntu 虚拟机,并安装 Ubuntu Linux(包括另外安装 GCC、NASM 和 Samba),供以后 C 与汇编混合编程时使用1.1.2 编译环境与工具汇编语言操作系统: Window
3、s XP/7 编译器: NASM C 语言与汇编混合编程名师归纳总结 - - - - - - -第 1 页,共 47 页精选学习资料 - - - - - - - - - 操作系统:虚拟机中的 Linux (Ubuntu)编译器: GCC 与 NASM 链接器: LD 1.1.3 其他开发工具Windows 平台NotePad+源代码编辑,编写汇编和C 语言源程序、配置文件等文本文件WinHex 二进制编辑,文件、软盘映像、磁盘 FloppyWriter 将引导扇区等写入软盘映像 WinImage 用于将文件复制进 FAT12 软盘映像 Debug调试汇编程序 Linux 平台 Samba Li
4、nux 与 Windows 进行网络共享的工具(已剔除)gedit 图形界面的文本编辑器,用于编写汇编和 C 语言源程序1.1.4 测试环境虚拟机: Bochs 操作系统: DOS(MS-DOS 6.22 或 FreeDOS 1.1)系统软盘映像 外存:(带 FAT12 的) 1.44MB 软盘映像、 U 盘 文件格式: COM 、BIN 、 ELF 1.2 引导1.2.1 引导过程运算机加电或重启CPU 复位 内存清零 内存奇偶校验跳转到地址为 FFFF0h 处的系统 BIOS 入口指令,执行主板 ROM 中的例程 检查各个端口, 识别并初始化设备,然后将这些设备连接到运算机上,并供应 在设
5、备上的 I/O 服务创建两个数据区中断向量表和 BIOS 数据区读启动盘的第一个物理扇区,假如其最终两个字节为55h 和 AAh ,就装入该扇区到内存地址7C00h 处,并跳转到7C00h 处执行(引导扇区里面的指令,一般是装入操作系统的引导程序)名师归纳总结 - - - - - - -第 2 页,共 47 页精选学习资料 - - - - - - - - - 1.2.2 引导扇区引导扇区( Boot Sector )是磁盘的第一个物理扇区(512B),构成:主引导记录( MBR = Master Boot Record ,446B)磁盘分区表( DPT = Disk Partition Tab
6、le , 4*16=64B )引导记录标识符(BRID = Boot Record IDentifier,2B,55h AAh )1.3 引导试验1.3.1 编写引导汇编代码用 NotePad+编写汇编源代码(参见“01 操作系统的试验环境与引导.doc” 的 3.3)用 org 操作符设置程序的入口地址为7C00h 设置 DS 和 ES=CS 调用后面定义的显示字符串函数 进入无限循环定义显示字符串函数用10h 号中断的 13h 功能实现(红色)字符串显示定义字符串常量“Hello, OS world.”用 times 伪指令将剩余空间填充为 0 将引导扇区的最终 2 个字节设置为 55h
7、和 AAh 将写好的汇编程序用文件名boot.asm 储存到 NASM 程序所在的目录中用 NASM 将程序编译成二进制文件 boot.bin :nasm boot.asm -o boot.bin 1.3.2 创建软盘映像参见“03FAT 文件系统与文件装载.doc” 的 3.1 运行 Bochs 程序组中的“Disk Image Creation Tool ” 程序( bximage.exe)在“Please type ha or fd. hd ” 后键入 fd(指软盘,默认为硬盘 hd)后回车在下面的选项中用回车挑选默认的 1.44MB 软盘在下面的选项中键入软盘映像文件的名称“bt.im
8、g ” (默认为“a.img ” )后回车再按任意键完成创建新建的软盘映像文件会被存放在 Bochs 程序的主目录中将软盘映像文件移动到 Bochs 程序的“dlxlinux ” 子目录1.3.3 将 boot.bin 写入软盘映像运行 FloppyWriter.exe 程序单击“Write File to Image ” (写文件到映像)按钮在弹出的 “ 打开文件”对话框中, 选中 NASM 程序目录中的 boot.bin 文件后按 “ 打开” 按钮名师归纳总结 - - - - - - -第 3 页,共 47 页精选学习资料 - - - - - - - - - 在新弹出的 “ 打开文件”对话
9、框中, 选中 Bochs 程序的“ dlxlinux ” 子目录中的bt.img文件后按“ 打开” 按钮弹出含字符串“ 胜利! ” 的表示写入胜利的消息框1.3.4 用软盘映像启动虚拟机参见“03FAT 文件系统与文件装载.doc” 的 2.3;修改 Bochs 虚拟机的配置文件用记事本或NotePad+打开 Bochs 程序的“dlxlinux ” 子目录中的虚拟机配置文件 bochsrc.bxrc 将其中的“floppya: 1_44=floppya.img, status=inserted” 行中的“floppya.img ”改为我们自己的软盘映像文件“bt.img”将“boot: c”
10、 行中的硬盘“c” 改为“floppy ” (软盘)储存 bochsrc.bxrc 文件重新启动 Linux Demo in Bochs 2.5.1 虚拟机1.3.5 用 WinHex 编辑启动 U 盘留意!下面的操作可能会破坏 U 盘的分区结构;插入(空白或闲散的)U 盘运行 WinHex 打开 boot.bin 文件选中“ 工具 /打开磁盘”菜单项, 在弹出的 “ 编辑 磁盘” 对话框中, 挑选下部的 “ 物理驱动器” 中 U 盘对应项,按“ 确定” 钮打开 U 盘选中 boot.bin 文件前面的非0 内容,按 Ctrl+C 复制到剪接板定位到 U 盘的开头处, 按 Ctrl+B(并在弹
11、出的确认菜单中按“ 确定” 钮),将 boot.bin中的代码复制到 U 盘的启动扇区确保 U 盘的第一个物理扇区(即引导扇区)的最终两个字节为 55h AAh 重启运算机,挑选用 U 盘启动2 汇编程序与代码块装载2.1 CPU Intel 8086(16 位,实模式)、80286(16 位,爱护模式) 、80386(32 位,爱护模式+分页机制)IA-32(Intel Architecture-32 ,因特尔 32 位体系结构) = x86-32,包括 80386 和 80486 IA-64 = 指 Intel 公司的 64 位 CPU 安腾( Itanium)架构(与 IA-32 不兼容
12、)x64 = Intel 64 / IA-32e = AMD64 / x86-64 =( AMD 创造,与 IA-32 兼容),包括奔腾(Pentium)、酷睿( Core)、赛扬( Celeron)、凌动( Atom )名师归纳总结 - - - - - - -第 4 页,共 47 页精选学习资料 - - - - - - - - - 2.2 寄存器2.1.1 8086 寄存器Intel 8086 有 14 个 16 位寄存器;8 个通用寄存器4 个数据寄存器:AX (累加)、BX (基址)、CX(计数)、DX (数据)4 个指针变址寄存器:SP(堆栈指针) 、BP(基址指针) 、SI(源变址)
13、、DI(目的变址)4 个段寄存器: CS(代码段)、DS(数据段)、SS(堆栈段)、ES(附加段)2 个专用寄存器:2.1.2 标志寄存器IP(指令指针)、FLAGS (标志)8086 的 16 位标志寄存器 FLAGS 中一共定义了 9 个标志位,其中的 6 个状态标志位可用于条件代码,3 个掌握标志位可影响指令的执行结果;6 个状态标志位:零标志 ZF (第 6 位)指明算术或比较运算的结果,可被 JZ/JNZ 指令利用符号标志 SF(第 7 位)运算结果的符号,可被 JS/JNS指令利用进位标志 CF(第 0 位)包含算术运算操作后最高位的进位或移位 /循环操作后最终位的内容,可被 JC
14、/JNC 指令利用溢出标志 OF(第 11 位)指出算术运算后最高位溢出,可被 JO/JNO 指令利用奇偶标志 PF(第 2 位)指明在操作产生的结果中,低字节里为 1 的位的数量的奇偶,可被 JPE/JNP 或 JPO 指令利用帮助进位标志 AF (第 4 位)在字操作时发生低字节向高字节进位或借位时、在字节操作时发生低 指令3 个掌握标志位:4 位向高 4 位进位或借位时, AF=1 ,否就为 0,无相关的 CPU方向标志 DF(第 10 位)确定传送或比较字符串数据时的方向,默认 DF=0 为左/上 /索引增加方向,可以用指令STD/CLD 来设置成递减 /递增方向中断答应标志IF(第
15、9 位)指明是否处理外部可屏蔽中断,可以用指令STI/CLI来设置要 /不处理中断2.1.3 80386 寄存器在 Intel 80386 CPU 中,8 个通用寄存器和 2 个专用寄存器都从 16 位扩展到了 32 位(命名前增加了一个字母 E=Extended ,扩展 ),但 4 个段寄存器仍旧保留为 16 位的,另外仍增加了 2 个新的 16 位附加段寄存器 FS 和 GS,使程序可同时操作的段达到 6 个;80386( 80286)新增加的寄存器仍有:4 个系统地址寄存器名师归纳总结 全局描述符表寄存器GDTR (32 位) GDT 的线性基址,相关的装入/保第 5 页,共 47 页-
16、 - - - - - -精选学习资料 - - - - - - - - - 存寄存器的特权指令为 LGDT/SGDT 局部描述符表寄存器LDTR (16 位) LDT 的段挑选符, 相关的装入 /储存寄存器的特权指令为 LLDT/SLDT 中断描述符表寄存器 IDTR (32 位) IDT 的线性基址,相关的装入 /储存寄存器的特权指令为 LIDT/SIDT 任务寄存器 TR (16 位) TSS 的段挑选符,相关的装入 /储存寄存器的特权指令为 LTR/STR 4 个 32 位的掌握寄存器CR0 80286 的 16 位 MSW(Machine Status Word,机器状态字) 的 32
17、位扩展,其最低位为PE(Protection Enable ,启用爱护 模式 ),最高位为PG(Paging,分页)用于启动分页机制CR1未使用CR2存放引起页故障的线性地址CR3 页目录基址寄存器8 个调试寄存器 DR0DR7 8 个测试寄存器 TR0TR7 2.3 BIOS 中断2.3.1 调用格式BIOS 中断调用的一般格式为:mov ah,功能号名师归纳总结 - - - - - - -第 6 页,共 47 页精选学习资料 - - - - - - - - - ; 设置各种入口参数int 中断号2.3.2 常用 BIOS 中断显示字符 int 10h 的 0Eh 功能显示字符串int 10
18、h 的 13h 功能读按键 int 16h 的 00h 功能读扇区 int 13h 的 02h 功能2.3.3 MY-OS 例引导扇区程序(boot1.asm):显示 3 个字符串( MY-OS 1.0 、C 2022 Li Caiwei 、Please Key in characters Esc to quit:+ 响铃 换行 回车)、接受用户键入字符并回显到屏幕上;汇编代码参见“ 02汇编程序与代码块装载 .doc ”中的 2.2 的 3;2.4 装载代码块将 boot1.asm 的第一行代码改为:org 7E00h,另存为 boot2.asm 用 NASM 将 boot2.asm 编译为
19、 boot2.bin 利用 WinHex 将 boot2.bin 写入 bt.img 的其次个扇区 在原先的 boot.asm 的基础上,增加装载其次个扇区到 7E00h 处的汇编代码,储存 为 boot3.asm,参见“02 汇编程序与代码块装载 .doc” 中的 3 用 NASM 将 boot3.asm 编译成 boot3.bin 利用 WinHex 或 FloppyWriter 将 boot3.bin 写入 bt.img 的第一个扇区 用 bt.img 启动 Bochs 虚拟机2.5 Debug 常用的 debug 命令:R(Register 寄存器)查看、修改 CPU 寄存器 D(Du
20、mp 转储)查看内存中的内容 E(Enter 键入)改写内存中的内容 A(Assemble 汇编)以汇编指令的格式,在内存中写入一条机器指令 U(Unassemble 反汇编)将内存中的机器指令翻译成汇编指令 P( Proceed 连续进行)单步执行,类似于 Step Over T(Trace 跟踪)执行一条机器指令,类似于 Step Into N(Name 名称)指定文件名,供 L 和 W 命令使用 L(Load 装入)读磁盘文件中的指定扇区到内存 W(Write 写入)写内存数据到磁盘文件的指定扇区名师归纳总结 Q(Quit )退出debug 第 7 页,共 47 页- - - - - -
21、 -精选学习资料 - - - - - - - - - .(帮忙)显示命令清单2.6 COM 文件2.6.1 可执行文件格式BAT(batch file ,批处理文件)DOS/Windows 的一种基于 ASCII 文本的脚本型可执行文件(扩展名为 .bat 或.cmd,后者为 Windows NT 引进)COM (command file ,命令文件)DOS 的二进制裸格式,不分段,会被装载到当前段的 100h 处(需使用 org 100h 指令, SP=100h-4),文件大小必需64KB-256B EXE (executable file ,可执行文件)DOS/Windows 的主要可执行
22、文件类型,有三种格式:MZ(Mark Zbikowski ,MS-DOS 的开发者之一) 原始的 DOS 可执行文件格式,以字母串“MZ ” (5A 4D )开头NE(New Executable ,新可执行)老式 16 位 Windows 可执行文件格式 (包括 .exe和.dll 扩展名),1985 年由 Windows 1.0 引进; NE 是一种分段的可执行文件,为了向后兼容,保留了 MZ 文件头PE(Portable Executable,可移植可执行) Windows NT 3.1 于 1993 年引进的 32位可执行文件格式(包括.exe、.dll 、.cpl、.ocx、.sys
23、、.scr、.drv 扩展名),现在支持 x86、x64 和 IA-64 指令集架构和 .NET 框架; PE 格式是 Unix 的老式可执行文件 格式 COFF(Common Object File Format ,公共对象文件格式)的修改版ELF (Executable and Linkable Format ,可执行与可链接格式)类 Unix 操作系统的 标准二进制文件格式2.6.2 生成和运行 COM 文件将 org 7C00h 改为 org 100h (假如需要用到堆栈如有函数调用 ,仍需设置SS=CS、SP=100h-4)例子: Hello (boot.asm-hello.asm
24、)、MY-OS (boot1.asm- my-os.asm)用 NASM 编译成 com 文件:nasm *.asm -o *.com 在 DOS 命令行 /Windows 的命令窗口(如 中,使用 hello 或 my-os 启动运行2.6.3 COM 文件例 hello NASM 运行界面、“ 开头 /运行” 的 cmd)下面是可以生成 COM 文件的例子使用 BIOS 的 10h 号中断的 13h 号功能,在文本屏幕的左上角,显示黑底红字的字符串“Hello, OS world. ” ;源代码( hello.asm)名师归纳总结 org 100h ; 告知编译器程序加载到100H 处第
25、8 页,共 47 页mov ax,cs ; 置 DS 和 ES = CS - - - - - - -精选学习资料 - - - - - - - - - mov ds,ax mov es,ax call DispStr ; 调用显示字符串函数jmp $ ; 无限循环DispStr: ; 显示字符串例程mov ax,BootMsg mov bp,ax ; ES:BP= 串地址mov cx,16 ; CX= 串长mov ah,13h ; AH=BIOS 中断的功能号mov al,01h ; AL=1 表示光标放到串尾mov bh,0 ; BH= 页号mov bl,0ch ; BL= 颜色(黑底红字)m
26、ov dh,0 ; DH= 行号mov dl,0 ; DL= 列号int 10h ; 调用 10h 号中断ret ; 函数返回BootMsg: ; 显示用的字符串db Hello, OS world. 用 NASM 编译成 com 文件: nasm hello.asm -o 在 NASM 的命令行,用 hello运行3 FAT 文件系统与文件装载3.1 文件系统3.1.1 磁盘分区磁盘分区表( DPT = Disk Partition Table )位于引导扇区,含 4 个分区表项,每一项占 16B 分区表项的结构分区类型( CHS/LBA )如 0x06/0x0E = FAT16、0x0B/
27、0x0C = FAT32、0x07 = NTFS、0x05/0x0F = 扩展、 0x83 = Linux CHS(Cylinder/Head/Sector ,柱面 /磁头 /扇区)磁盘的一种传统寻址方式;LBA (Logical Block Addressing ,规律块寻址)磁盘的一种线性寻址方式,有22b(ATA,1986)、28b(ATA-1 ,1994)和 48b(ATA-6 ,2003)三种版本; 1996年以后推出的硬盘一般都采纳了 LBA 3.1.2 FAT 分区FAT(File Allocation Table ,文件安排表) 是微软公司为其操作系统 DOS 和老式 Wind
28、ows所定义的一套文件系统,包括FAT12( 32MB )、FAT16( 32MB/2GB )、FAT32( 2TB )名师归纳总结 - - - - - - -第 9 页,共 47 页精选学习资料 - - - - - - - - - 和 FAT64/exFAT( 64ZB)等多种详细格式;1GB( 2 30)= 1000MB 、1TB( 2 40)= 1000GB 、1PB(250)= 1000TB 、1EB(260)= 1000PB 、1ZB (270)= 1000EB 、1YB (280)= 1000ZB ;3.2 FAT12 在我们的 OS 试验中,使用1.44MB 软盘映像作为测试介质
29、,采纳FAT12 文件系统;3.2.1 1.44MB 软盘格式1.44MB 软盘的格式: 2 个磁头( head)/ 盘面( side)、每磁头 80 个柱面( cylinder )/磁道( track)、每个柱面有 18 个扇区( sector)、每个扇区有 512 个字节( byte),所以软盘的容量为:2 磁头 *80 柱面 *18 扇区 *512B=2880 扇区 *512B=1474560B=1440KB=1.44MB 对 1.44MB 软盘,采纳 FAT12 分区,引导扇区中没有分区信息,但有根目录区(224 条目*32B = 7168B = 14 扇区);FAT12 的每个 FA
30、T 项占 12 位( 1.5B),每个簇只有一个扇区;整个软盘 2880 个扇区,需要 2880*1.5B = 4320B = 8.44 个扇区,所以每个 FAT 表的大小设为 9 个扇区;3.2.2 FAT12 分区结构下面是我们使用的1.44MB 软盘映像的FAT12 分区结构:FAT12 分区结构区域起始地址起始扇区扇区数内容说明引导扇区0 0 1 分区引导扇区无额外保留扇区FAT 区200h 1 9 FAT#1 主 FAT 1400h 10 9 FAT#2 备份 FAT 根目录区2600h 19 14 根目录固定大小数据区4200h 33 2847 文件数据其余空间3.2.3 分区引导
31、扇区分区引导扇区也叫 VBR ( Volume Boot Record ,卷引导记录)区或 PBR(Partition Boot Record,分区引导记录)区,是分区的第一个扇区(512B);FAT12 分区引导扇区的结构名师归纳总结 偏移长度内容第 10 页,共 47 页00h 3B 跳转指令( jmp 地址nop = EB . 90)03h 8B OEM 名串“MY-OS1.0 ”0Bh 25B BPB 24h 26B 扩展 BPB 5Ah 448B 引导程序代码- - - - - - -精选学习资料 - - - - - - - - - 01FEh 2B 有效终止标志(55 AA )3.
32、2.4 BPB 与 EPBP FAT12 的 BPB 结构( 25B)偏移长度内容1.44M 软盘值0x0B 2B 每扇区字节数(一般为512)200h=512 0x0D 1B 每簇扇区数1 0x0E 2B 保留扇区数 含本扇区 ( 1)1 0x10 1B FAT 数(一般为2)2 0x11 2B 最大根目录项数E0h=224 0x13 2B 总扇区数( 64K ,容量 32MB )B40h=2880 0x15 1B 介质描述符F0h 0x16 2B FAT 占扇区数9 0x18 2B 每道扇区数12h=18 0x1A 2B 磁头数2 0x1C 4B 隐匿扇区数 (对无分区的介质必需为0 0)
33、0x20 4B 总扇区数( 64K ,容量 32MB )0 FAT12 的 EBPB 结构( 26B)偏移长度内容1.44M 软盘值0x24 1B 驱动器号(软0/硬 0x80)0 0x25 1B 保留(一般为0)0 0x26 1B 扩展引导标签 (一般为 0x29) 29h 0x27 4B 卷 ID (序列号,随机数)12345678h 0x2B 11B 卷标(不足补空格,无效)“MyOS System”0x36 8B 文件系统类型 (不足补空格)“FAT12 ”3.2.5 文件条目格式FAT12 采纳多级目录结构,子目录用文件表示;目录为文件条目的列表,每个条目占用32B(20h 字节),
34、其格式如下:名师归纳总结 偏移长度内容00h 11B 文件名 8B(不足补空格)+ 扩展名 3B(不足补空格) ,尾部空格被忽视0Bh 1B 英文字母必需大写,非法标点字符有:” *+,./:;. 文件属性(一般/档案文件 =20h、子目录 =10h、卷标 =08h)0Ch 10B 保留(全为0)16h 2B 最终写入时间(04 位:秒 /2029 、510 位:分 059 、1115 位:时 023 )18h 2B 最终写入日期(04 位:日131 、58 位:月112 、915 位:年0=1980127=2107 )第 11 页,共 47 页- - - - - - -精选学习资料 - -
35、- - - - - - - 1Ah 2B 开头簇号,卷标、指向根目录的子目录“.” 、空文件条目的开头簇号必需为0 1Ch 4B 文件大小(字节数)文件条目第一个字节值的特别含义值( h)00 05 2E E5 含义条目未用且可用值实际为 E5H 点条目( .或.)条目被删且不行用文件属性的标志位位序7 6 5 4 3 2 1 0 掩码 h 80 40 20 10 08 04 02 01 含义未用设备档案子目录卷标系统隐匿只读3.2.6 FAT 项FAT(File Allocation Table ,文件安排表) 是映射到分区中每个簇(cluster)的项( entry,条目)列表, FAT1
36、2 的每个项占12 位, FAT 项取值的含义见下表:FAT 项值( h)取值 含义000 闲暇簇001 保留簇002FEF 被占用簇,值为下一簇的序号FF0FF6 保留值FF7 坏簇FF8FFF 文件最终簇(一般取 FFF)FAT 表的前两个项储存特别的值(FAT12 前三个字节 h 值=F0 FF FF):项 0 = 低 8 位(首字节)为介质描述符(软盘为 位全为 1(FAT12: Fh)F0h、硬盘和 U 盘为 F8h)、其余项 1 = 终止簇标记( FAT12 通常取值为: FFFh)3.2.7 汇编源程序下面是生成FAT12 分区结构的汇编源程序代码,包括跳转指令、 OEM 串、B
37、PB 与 EPBP,填充两个 FAT 表开头处的两个 EBPB 中的卷标不起作用) ;FAT 项( F0 FF FF),并在根目录中增加一个卷标条目(由于名师归纳总结 汇编源代码(似boot4.asm):第 12 页,共 47 页org 07c00h ; 加载到 0:7C00h 处jmp short LABEL_START ; Start to boot. nop ; 这个 nop 不行少BS_OEMName DB MY-OS1.0 ; OEM String, 必需 8 个字节(不足补空格); 下面是FAT12 的 BPB 与 EPBP - - - - - - -精选学习资料 - - - -
38、- - - - - BPB_BytsPerSec DW 512 ; 每扇区字节数BPB_SecPerClus DB 1 ; 每簇多少扇区BPB_RsvdSecCnt DW 1 ; Boot 记录占用多少扇区BPB_NumFATs DB 2 ; 共有多少 FAT 表BPB_RootEntCnt DW 224 ; 根目录文件数最大值BPB_TotSec16 DW 2880 ; 规律扇区总数BPB_Media DB 0xF0 ; 介质描述符BPB_FATSz16 DW 9 ; 每 FAT 扇区数BPB_SecPerTrk DW 18 ; 每磁道扇区数BPB_NumHeads DW 2 ; 磁头数 面
39、数 BPB_HiddSec DD 0 ; 隐匿扇区数BPB_TotSec32 DD 0 ; wTotalSectorCount 为 0 时这个值记录扇区数BS_DrvNum DB 0 ; 中断 13 的驱动器号BS_Reserved1 DB 0 ; 未使用BS_BootSig DB 29h ; 扩展引导标记 29h BS_VolID DD 12345678h; 卷序列号BS_VolLab DB MyOS System ; 卷标 , 必需 11 个字节(不足补空格)BS_FileSysType DB FAT12 ; 文件系统类型 , 必需 8 个字节(不足补空格)LABEL_START: ; B
40、OOT 代码被略去; 填充 0 和引导扇区的有效终止标志times 510-$-$ db 0 ; 用 0 填充引导扇区剩下的空间db 55h,0aah ; 引导扇区终止标志; 填充两个 FAT 表的头两个项(每个 FAT 占 9 个扇区)db 0f0h, 0ffh, 0ffh ; 介质描述符( F0h)和 Fh、终止簇标志项 FFFh times 512*9-3 db 0 ; 用 0 填充 FAT#1 剩下的空间db 0f0h, 0ffh, 0ffh ; 介质描述符( F0h)和 Fh、终止簇标志项 FFFh times 512*9-3 db 0 ; 用 0 填充 FAT#2 剩下的空间; 根
41、目录中的卷标条目db MyOS System ; 卷标 , 必需 11 个字节(不足补空格)db 8 ; 文件属性值(卷标条目的为 08h)dw 0,0,0,0,0 ; 10 个保留字节dw 0,0 ; 创建时间,设为 1980 年 0 月 0 日 0 时 0 分 0 秒dw 0 ; 开头簇号(卷标条目的必需为 0)dd 0 ; 文件大小(也设为 0)3.3 文件加载由于引导扇区的空间有限,操作系统的加载,必需依靠另外的装载程序模块来完成;而该装载模块,一般以文件形式,储备在磁盘系统分区的根目录中;需要在引导扇区中增加汇编代码,来搜寻FAT12 软盘根目录中的操作系统装载程序的名师归纳总结 二
42、进制文件LOADER.BIN ,并将其加载到内存,最终将掌握权交给此装载程序;第 13 页,共 47 页- - - - - - -精选学习资料 - - - - - - - - - 3.3.1 编写测试用的简洁装载程序我们编写一个简洁的汇编程序,用作装载测试; 该程序, 利用修改显存中指定位置的字值,在文本窗口前 4 行的中心显示 4 个字符L 、O 、A 、D ;另外,为了测试引导程序的读入含多个扇区的装载文件的功能,我们有意支配每个显示字符的代码段,各占一个扇区,并将每个扇区的剩余部分填 0;详细源代码参见“03 FAT 文件系统与文件装载 .doc” 中的 5.1 中的 loader.asm;3.3.2 加载 LOADER.BIN 文件加载 LOADER.BI