2、制作启动区 IPL

将heloos.nas后半部分删掉,因为启动区只需要最初的512字节,并将文件名改为ipl.nas
ipl.nas中的内容:

 ; hello-os
 ; TAB=4

         ORG        0x7c00          ; 指明程序的装载地址

 ; 以下这段是标准FAT32格式软盘专用的代码

         JMP        entry
         DB        0x90
         DB        "HELLOIPL"       ; freeparam 启动区的名称可以是任意的字符串(8字节)
         DW        512                ; 每个扇区(sector)的大小(必须为512字节)
         DB        1                ; 簇(cluster)的大小(必须为1个扇区)
         DW        1                ; FAT的起始位置(一般从第一个扇区开始)
         DB        2                ; FAT的个数(必须为2)
         DW        224              ; 根目录的大小(一般设成224项)
         DW        2880             ; 该磁盘的大小(必须是2880扇区)
         DB        0xf0             ; 磁盘的种类(必须是0xf0)
         DW        9                ; FAT的长度(必须是9扇区)
        DW        18                ; 1个磁道(track)有几个扇区(必须是18)
         DW        2                ; 磁头数(必须是2)
         DD        0                ; 不使用分区,必须是0
         DD        2880             ; 重写一次磁盘大小
         DB        0,0,0x29         ; 意义不明,固定
         DD        0xffffffff       ; (可能是)卷标号码
         DB        "HELLO-OS   "    ; freeparam 磁盘的名称(11字节)
         DB        "FAT12   "       ; 磁盘格式名称(8字节)
         RESB    18                 ; 先空出18字节

 ; 程序核心

 entry:
         MOV        AX,0            ; 初始化寄存器
         MOV        SS,AX
         MOV        SP,0x7c00       ;0x7c00到0x7dff为启动区内容的装载地址
         MOV        DS,AX           ;DS必须指定为0,因为它是默认的段寄存器,地址的值会加上这个值的16倍

 putloop:
         MOV        AL,[SI]
         ADD        SI,1            ; 给SI加1
         CMP        AL,0
         JE         fin
         MOV        AH,0x0e         ; 显示一个文字
         MOV        BX,15           ; 指定字符颜色
         INT        0x10            ; 调用显卡BIOS
         JMP        putloop

 fin:
         HLT                        ; 让CPU停止;等待指令
         JMP        fin             ; 无限循环


 msg: ; 信息显示部分
         DB        0x0a, 0x0a        ; 换行2次
         DB        "hello, world!"   ; freeparam
         DB        0x0a              ; 换行
         DB        0

         RESB    0x7dfe-$        ; 填写0x00,直到0x001fe,是为了保证第510字节(即第0x1fe字节)开始的地

方是55AA

         DB        0x55, 0xaa    ;如果启动区最后2字节不是0x55aa,计算机会认为盘上没有需要启动的程序。


制作一个不带扩展名的文件 “Makefile”,写入以下内容:

default :
    ../z_tools/make.exe img

#制作文件ipl.bin

ipl.bin : ipl.nas Makefile #要制作文件ipl.bin,需先检查ipl.nas和Makefile这两个文件是否准备好
    ../z_tools/nask.exe ipl.nas ipl.bin ipl.lst

#制作文件 helloos.img

helloos.img : ipl.bin Makefile
    ../z_tools/edimg.exe   imgin:../z_tools/fdimg0at.tek \
        wbinimg src:ipl.bin len:512 from:0 to:0   imgout:helloos.img

asm :
    ../z_tools/make.exe -r ipl.bin

img :
    ../z_tools/make.exe -r helloos.img

run :
    ../z_tools/make.exe img
    copy helloos.img ..\z_tools\qemu\fdimage0.bin
    ../z_tools/make.exe -C ../z_tools/qemu

install :
    ../z_tools/make.exe img
    ../z_tools/imgtol.com w a: helloos.img


#删除最终成果以外的所有中间生成文件,将硬盘清理干净

clean :
    -del ipl.bin
    -del ipl.lst

#把源程序以外的文件全部删干净

src_only :
    ../z_tools/make.exe clean
    -del helloos.img


这样,asm.bat,run.bat,install.bat都可以删掉了。
制作make.bat,以通过make.exe让Makefile发挥作用,make.bat中的内容为:

..\z_tools\make.exe %1 %2 %3 %4 %5 %6 %7 %8 %9

双击!cons_nt.bat,输入make_run
这里写图片描述
这里写图片描述

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值