编写软盘的启动代码-----第一天

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了编写软盘的启动代码-----第一天相关的知识,希望对你有一定的参考价值。

 

一个软盘的启动代码,和屏幕显示:


; hello-os   
; TAB=4     TAB键的宽带

; 标准FAT12格式软盘专用的代码 Stand FAT12 format floppy code   用windows格式化出来的软盘就是这种格式

        DB        0xeb, 0x4e, 0x90
        DB        "HELLOIPL"        ; 启动扇区名称(8字节) 软盘的第一个扇区被称为启动区,一个扇区=512字节  CPU启动时以512为单位进行读写的
; 计算机首先从最初的一个扇区开始读写软盘,所以称为启动扇区
DW 512 ; 每个扇区(sector)大小(必须512字节) DB 1 ; 簇(cluster)大小(必须为1个扇区) DW 1 ; FAT起始位置(一般为第一个扇区) DB 2 ; FAT个数(必须为2) DW 224 ; 根目录大小(一般为224项) DW 2880 ; 该磁盘大小(必须为2880扇区1440*1024/512) DB 0xf0 ; 磁盘类型(必须为0xf0) DW 9 ; FAT的长度(必??9扇区) DW 18 ; 一个磁道(track)有几个扇区(必须为18) DW 2 ; 磁头数(必??2) DD 0 ; 不使用分区,必须是0 DD 2880 ; 重写一次磁盘大小 DB 0,0,0x29 ; 意义不明(固定) DD 0xffffffff ; (可能是)卷标号码 DB "HELLO-OS " ; 磁盘的名称(必须为11字?,不足填空格) DB "FAT12 " ; 磁盘格式名称(必??8字?,不足填空格) RESB 18 ; 先空出18字节 ; 程序主体 DB 0xb8, 0x00, 0x00, 0x8e, 0xd0, 0xbc, 0x00, 0x7c DB 0x8e, 0xd8, 0x8e, 0xc0, 0xbe, 0x74, 0x7c, 0x8a DB 0x04, 0x83, 0xc6, 0x01, 0x3c, 0x00, 0x74, 0x09 DB 0xb4, 0x0e, 0xbb, 0x0f, 0x00, 0xcd, 0x10, 0xeb DB 0xee, 0xf4, 0xeb, 0xfd ; 信息显示部分 DB 0x0a, 0x0a ; 换行两次 DB "hello, world" DB 0x0a ; 换行 DB 0 RESB 0x1fe-$ ; 填写0x00直到0x001fe DB 0x55, 0xaa ; 是否有启动程序的判断,如果不是55 AA则返回一个无法启动的错误。 ; 启动扇区以外部分输出 DB 0xf0, 0xff, 0xff, 0x00, 0x00, 0x00, 0x00, 0x00 RESB 4600 DB 0xf0, 0xff, 0xff, 0x00, 0x00, 0x00, 0x00, 0x00 RESB 1469432

 

以上是关于编写软盘的启动代码-----第一天的主要内容,如果未能解决你的问题,请参考以下文章

编写OS第一步_编写引导程序boot

编写OS第一步_编写引导程序boot

Vue实战-第一天开发工具的使用

Huawei_Netconf_Ncclient

第一天

在软盘映像文件中使用 grub 在 bochs 中启动您自己的内核