Code for fun. Aimed nothing.

不管怎么说,造一个独立于库的程序总是开心的。如果你也像我一样这么认为的话。虽然它不能做任何实际的事情,只是作为占据软盘启动扇区的一个小东西,在被bios加载后打印出“hello world”而已。

这个小东西是从2.6版本的linux内核参考来了。具体文件是/arch/i386/boot/bootsect.S。虽然改动没有什么技术含量,但是毕竟是我找来的呀。

见过网上类似的东西,但是它们的编译好像要用到as86,ld86或者nasm,乃至dos下面的masm。我的fedora core 4没有,要下。这样就麻烦了。现在我的这个有gcc,objcopy,make就可以了,这三个我的系统装好就有的。比较方便。自豪的说^_^

一共两个文件:
bootsect.S:

BOOTSEG = 0x07C0

.code16
.text
.global _start
_start:
        jmpl    $BOOTSEG, $start2
start2:
        movw    %cs, %ax
        movw    %ax, %ds
        movw    %ax, %es
        movw    %ax, %ss
        movw    $0x7c00, %sp
        sti
        cld

        movw    $msg, %si
msg_loop:
        lodsb
        andb    %al,%al
        jz      start2
        movb    $0xe, %ah
        movw    $7, %bx
        int     $0x10
        jmp     msg_loop
msg:
        .ascii "hello world/r/n"
        .byte   0
.org 510
        .word 0xAA55

makefile:

all: bootsect
bootsect:       bootsect.o
        objcopy -O binary bootsect.o bootsect
        dd if=bootsect of=/dev/fd0
bootsect.o:     bootsect.S
        gcc -c bootsect.S
clean:  
        rm bootsect.o
        rm bootsect
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值