boot.s进入保护模式

来源:互联网 发布:余额宝委托网络理财 编辑:程序博客网 时间:2024/06/10 01:59

;kernel.s

start:

mov ah,9
mov bh,0
mov al,'o'
mov bl,0x1e
mov cx,10
int 0x10

jmp start




;boot.s

[BITS 16]
jmp start
start:
cli
mov al,1
mov ah,2
mov bx,0x1000
mov es,bx
mov bx,0
mov cx,0x0002
mov dx,0x0
int 0x13
jnc ok_load
die:
jmp die
ok_load:
mov ax,0x1000
mov ds,ax
mov si,0
mov di,0
mov es,di
mov cx,17
cpy:
movsb
dec cx
jcxz cpy_done
jmp cpy
cpy_done: 
mov dx,0
mov ds,dx
lgdt [0x7c00+gdt_48]
mov edx,cr0
or edx,1
mov cr0,edx
jmp dword 0x0008:0
gdt_48:
DW 16
DW gdt+0x7c00,0
gdt:
DW 0,0,0,0
DW 0Xffff
DW 0X0000
DW 0X9e00
DW 0X0000
TIMES 510-($-$$) DB 0
DW 0XAA55


/*a.bxrc*/

floppya:1_44=c.img,status=inserted
boot:floppy


/*makefile*/

all:
nasm -o boot.bin boot.s 
nasm -o kernel.bin kernel.s
dd if=/dev/zero of=c.img count=1
dd if=boot.bin of=c.img  count=1
cat kernel.bin >> c.img
bochs -q -f a.bxrc
clean:
rm -rf boot.bin 

原创粉丝点击