helloos3
准备工作
代码编辑
; hello-os
; TAB=4
ORG 0x7c00 ; 指明程序的装载地址
; 以下的记述用于FAT12格式的软盘
JMP entry
DB 0x90
DB "HELLOIPL" ; 可以自由的写引导扇区的名称
DW 512 ; 每个扇区的大小(必须是512)
DB 1 ; 簇的大小(必须是1个扇区)
DW 1 ; FAT从哪里开始(一般都是从第1扇区开始)
DB 2 ; FAT的个数(必须为2)
DW 224 ; 根目录的大小(通常设为224条目)
DW 2880 ; 磁盘大小(必须为2880扇区)
DB 0xf0 ; 磁盘种类(必须为0xf0)
DW 9 ; FAT的长度(必须为9扇区)
DW 18 ; 每个磁道有多少扇区(必须是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字节
; 程序核心
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 ; 换行2次
DB "hello, world"
DB 0x0a ; 换行
DB 0
RESB 0x7dfe-$ ; 填定0x00,直到0x001fe
DB 0x55, 0xaa
; 以下是启动区以下部分的输出
DB 0xf0, 0xff, 0xff, 0x00, 0x00, 0x00, 0x00, 0x00
RESB 4600
DB 0xf0, 0xff, 0xff, 0x00, 0x00, 0x00, 0x00, 0x00
RESB 1469432
编译及运行
- 在tolset文件夹中新建子文件夹helloos2;
- 复制 tolset 文件夹中子文件夹z_new_w中,!cons_9x.bat和!cons_nt.bat文件到helloos2文件夹内;
- 打开记事本输入以下代码,并另存为asm.bat且放在helloos2文件夹内:
..\z_tools\nask.exe helloos.nas helloos.img
- 同上,打开记本输入以下代码,并保存为run.bat且放在helloos2文件夹内:
copy helloos.img ..\z_tools\qemu\fdimage0.bin
..\z_tools\make.exe -C ..\z_tools\qemu
- 以上,文件都准备好了,下面开始运行。
- 点击运行!cons_nt.bat,出现如下界面:
- 在打开的命令行程序中输入 asm 并回车,生成helloos.img文件:
- 接着输入 run 并回车输出以下界面:
- 接下来使用VMware-Workstation运行。
- 创建虚拟机
因为大多所以就在这里一一发了,直接上链接:https://blog.csdn.net/zl18206208825/article/details/104118226
2.运行虚拟机,会输出以下界面
好了,以上是30天自制操作系统第2天helloos3,请大家多多支持!!!