30天自制操作系统-startHaribote

0.准备

  • 书中这里将显示代码分到Haribote.nas。org 0xc400载入内存中。
  • 对于每一个nasm生成的bin文件而言都是从0x0000000开始的,也就是说我们可以把bin文件载入到u盘的任意扇区,从上一个博客我们将30697的扇区载入到内存地址为0x8200中,所以我们把haribote.bin文件放到u盘的30698扇区,内存地址从0x8400开始,所以首先将haribote.nas改成org 0x8400再加入一句打印信息看下效果,毕竟书中最后的效果是显示全黑
  • ipl10.nas里的最后jmp 改为jmp 0x8400
; haribote-os
; TAB=4

		ORG		0x8400	
		MOV		SI, msg
		call 		putloop
		MOV		AL,0x13			
		MOV		AH,0x00
		INT		0x10
fin:
		HLT
		JMP		fin
msg:
		DB 		0x0a
		DB 		"fuck test"
		DB 		0
putloop:
		MOV		AL,[SI]
		ADD		SI,1			
		CMP		AL,0
		JE		FINISH	
		MOV		AH,0x0e			
		MOV		BX,15			
		INT		0x10			
		JMP		putloop
FINISH:
		ret

ipl10.nas 


		push		ds
		mov		ax, 0x820
		mov		ds, ax
		mov		bx, 0x0
		mov		dl, [bx]
		mov		dh, 0xff
		call		dispreg16
		JMP		0x8400	

haribote.bin内容:

使用dd命令写入u盘30698扇区:

dd if=startHaribote\haribote.bin of=\\.\Volume{19572513-924e-11e8-afeb-806e6f6e6963} seek=30698

写入扇区后,U盘内容如下:

1.结果

看起来黑黑一片,其实是有亮度的,再选择u盘启动后,会先显示上一张的0x42的内容和haribote.nas的内容,然后再屏幕变黑的。

github:https://github.com/PofeiShit/os

  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 2
    评论
创建一个完整操作系统是一个复杂而庞大的项目,通常涉及到操作系统内核、驱动程序、系统架构等多个层面,对于30天的时间来说,这是不现实的。然而,如果你对操作系统编程有兴趣,你可以尝试学习和理解操作系统的基本原理,并用一些轻量级的框架或工具如QEMU、Minix等来进行实践。 以下是一个简化的步骤概述: 1. **理论学习**:阅读操作系统相关的书籍,如《深入理解计算机系统》(The Art of Computer Programming, Volume 3),了解进程管理、内存管理、文件系统等基础概念。 2. **选择平台**:决定从用户空间(比如Linux内核的clone() API)还是内核模式(比如使用QEMU模拟)开始,因为内核开发涉及更多底层硬件知识。 3. **编写基本结构**:创建进程控制块(PCB)、内存管理模块,开始实现基本的系统调用接口。 4. **进程管理**:实现进程的创建、调度、同步和通信机制。 5. **内存管理**:设计虚拟内存映射、内存分配和回收算法。 6. **I/O管理**:处理设备驱动程序,实现简单的输入输出操作。 7. **文件系统**:如果要做全功能操作系统,你需要实现一个基本的文件系统,用于存储和读取数据。 8. **构建测试环境**:编写单元测试和系统测试,确保每个部分都能正常工作。 9. **持续学习和改进**:在整个过程中,不断查阅文档、源代码和参考资料,以解决遇到的问题。 记住,这是一个高度概括的过程,实际操作中每一步都需要大量的研究和编码。如果你是初学者,可能需要投入更多时间来学习相关基础知识。关于30天的具体代码示例,由于这个项目的规模和复杂性,这里无法提供详细的代码片段,但你可以通过在线教程和开源项目如MINIX的学习来找到起点。

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值