动手写自己的第一个"操作系统"

参考资料:《Linux内核完全剖析–基于0.12内核》

1.首先编写代码

boot.s代码如下:

!
! boot.s -- bootsect.c的框架程序。用代码0x07替代串msgl中1字符,然后在屏幕第一行显示。

BOOTSEG = 0x07c0

entry start
start:
    jmpi    go,BOOTSEG
go: mov     ax,cs
    mov     ds,ax
    mov es,ax
    mov cx,#12                 !需要显示的字符个数,包括回车和换行
    mov dx,#0x1104             !从第18行,第5列开始显示
    mov bx,#0x000c             !颜色设置为红色
    mov bp,#msgl               !指向要显示的字符串
    mov ax,#0x1301
    int 0x10
loop0:  jmp     loop0
msgl:   .ascii  "Hello World"
    .byte   13,10              !回车和换行
.org 510
    .word   0xAA55

2.通过as86汇编语言程序的编译和链接生成我们需要的引导程序boot。

as86 -0 -a -o Desktop/boot.o Desktop/boot.s     //编译。生成与as部分兼容的目标文件。
ld86 -0 -s -o Desktop/boot Desktop/boot.o       //链接。去掉符号信息。

3.然后,通过bximage命令生成虚拟软盘。
bximage

4.之后将引导扇区写入软盘。这时需要注意刚才生成的boot是544B的,而不是512B,多出来的是MINIX的可执行文件的头结构,需要人工删除。所以用了dd命令删除了boot的前32B。

dd bs=32 if=Desktop/boot of=a.img skip=1        //写入软盘或Image盘文件中

5.然后配置bochs的配置信息bochsrc.
我的配置信息(config4ji)如下:

#BIOS映像文件和VGA BIOS映像文件
romimage:file=/usr/local/share/bochs/BIOS-bochs-latest   
vgaromimage:file=/usr/local/share/bochs/VGABIOS-lgpl-latest
#这个是启动软盘,就是我们刚才做的那个
floppya:1_44=a.img,status=inserted 
#确定启动方式
boot:floppy

6.然后运行bochs。

bochs -f Desktop/config4ji      

结果如下:

os

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值