OS_30 day2

电子书里面 ipl.bat 代码有误 :JMP entry位置错误

在编译时不会出错,但在制作img文件时,

提示错误:imgout BPB data error

应该将位置移到 “程序主体”部分最后,如下

; hello-os
; TAB=4

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

; 标准FAT12格式软盘专用的代码 Stand FAT12 format floppy code

       
        DB        0xeb, 0x4e, 0x90
        DB        "HELLOIPL"        ; 启动扇区名称(8字节)
        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字节

        JMP        entry

; 程序主体

entry:
        MOV        AX,0            ; 初始化寄存器
        MOV        SS,AX
        MOV        SP,0x7c00
        MOV        DS,AX
        MOV        ES,AX

        MOV        SI,msg
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        ; 换行两次
        DB        "hello, world"
        DB        0x0a            ; 换行
        DB        0

        RESB    0x7dfe-$        ; 填写0x00直到0x001fe

        DB        0x55, 0xaa

由于本篇修正方法源于GitHub,但由于打开就是404,故无法看到正文,但还是记录一下

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值