1、 hello world

将OS\projects\01_day\helloos1”文件夹复制到”OS\tolset”文件夹下
这里写图片描述
进入helloss1文件夹,将helloos.nas删除,新建一个helloos.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,计算机会认为盘上没有需要启动的程序。
 ; 以下是启动区以外部分的输出

         DB        0xf0, 0xff, 0xff, 0x00, 0x00, 0x00, 0x00, 0x00
         RESB    4600
         DB        0xf0, 0xff, 0xff, 0x00, 0x00, 0x00, 0x00, 0x00
         RESB    1469432

双击”!cons_nt.bat”,在弹出的命令窗口中输入asm,然后在输入run
这里写图片描述
文件夹下多了一个由helloos.nas生成的helloos.img
然后就会看到虚拟机加载启动了helloos.img这个简易的操作系统

这里写图片描述

制作启动U盘:

准备一个U盘,并确保里面无重要文件
用UltraISO打开hellos.img
这里写图片描述
点击菜单项”启动-写入硬盘映像…”,在”硬盘驱动器”中选好U盘,然后点击”写入”按钮
这里写图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值