Code for fun. Aimed nothing.

王朝other·作者佚名  2006-01-10
窄屏简体版  字體: |||超大  

不管怎么说,造一个独立于库的程序总是开心的。如果你也像我一样这么认为的话。虽然它不能做任何实际的事情,只是作为占据软盘启动扇区的一个小东西,在被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

 
 
 
免责声明:本文为网络用户发布,其观点仅代表作者个人观点,与本站无关,本站仅提供信息存储服务。文中陈述内容未经本站证实,其真实性、完整性、及时性本站不作任何保证或承诺,请读者仅作参考,并请自行核实相关内容。
 
 
© 2005- 王朝網路 版權所有 導航