30天自制操作系统-day2

30天自制操作系统(linux)-day2

使用简单的汇编语言

首先Centos环境安装nasm,使用vim工具编辑一个os.asm文件,文件内容如下:

DB	0xeb, 0x4e, 0x90, 0x48, 0x45, 0x4c, 0x4c, 0x4f
DB	0x49, 0x50, 0x4c, 0x00, 0x02, 0x01, 0x01, 0x00
DB	0x02, 0xe0, 0x00, 0x40, 0x0b, 0xf0, 0x09, 0x00
DB	0x12, 0x00, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00
DB	0x40, 0x0b, 0x00, 0x00, 0x00, 0x00, 0x29, 0xff
DB	0xff, 0xff, 0xff, 0x48, 0x45, 0x4c, 0x4c, 0x4f
DB	0x2d, 0x4f, 0x53, 0x20, 0x20, 0x20, 0x46, 0x41
DB	0x54, 0x31, 0x32, 0x20, 0x20, 0x20, 0x00, 0x00
RESB	16
DB	0xb8, 0x00, 0x00, 0x8e, 0xd0, 0xbc, 0x00, 0x7c
DB	0x8e, 0xd8, 0x8e, 0xc0, 0xbe, 0x74, 0x7c, 0x8a
DB	0x04, 0x83, 0xc6, 0x01, 0x3c, 0x00, 0x74, 0x09
DB	0xb4, 0x0e, 0xbb, 0x0f, 0x00, 0xcd, 0x10, 0xeb
DB	0xee, 0xf4, 0xeb, 0xfd, 0x0a, 0x0a, 0x68, 0x65
DB	0x6c, 0x6c, 0x6f, 0x2c, 0x20, 0x77, 0x6f, 0x72
DB	0x6c, 0x64, 0x0a, 0x00, 0x00, 0x00, 0x00, 0x00
RESB	368
DB	0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x55, 0xaa
DB	0xf0, 0xff, 0xff, 0x00, 0x00, 0x00, 0x00, 0x00
RESB	4600
DB	0xf0, 0xff, 0xff, 0x00, 0x00, 0x00, 0x00, 0x00
RESB	1469432

大家仔细查看就会发现,这些内容就是上节我们在hello.img文件中输入的内容,只不过在512字节后面我们又新增了一些东西而已。

将os.asm文件编译成bin文件

nasm hello.asm -o os.bin

进而将bin文件制作成img文件

dd if=os.bin of=os.img bs=512 count=2

按照第一节的内容加载os.img文件,结果如下图

image-20210102222907070

原文地址:https://www.cnblogs.com/wangdongfang/p/14224247.html