30天自制操作系统第2天helloos3

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
  • 以上,文件都准备好了,下面开始运行。
    1. 点击运行!cons_nt.bat,出现如下界面:
      在这里插入图片描述
    2. 在打开的命令行程序中输入 asm 并回车,生成helloos.img文件:
      在这里插入图片描述
    3. 接着输入 run 并回车输出以下界面:
      在这里插入图片描述
  • 接下来使用VMware-Workstation运行。
    1. 创建虚拟机
      在这里插入图片描述
      因为大多所以就在这里一一发了,直接上链接:https://blog.csdn.net/zl18206208825/article/details/104118226
      2.运行虚拟机,会输出以下界面
      在这里插入图片描述
      好了,以上是30天自制操作系统第2天helloos3,请大家多多支持!!!
  • 1
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值