最简单的操作系统


运行于虚拟机
汇编风格:NASM

org 0x7c00
jmp begin_real_mode

boot_msg: db "Load boot..."
pm_msg: db "go to protected mode..."
 
printmsg:
mov ax,0x1301 ; Service number
mov dx,0 ; Sursor position
mov bx,0xA ; Green Color
int 0x10
ret
clrscr:
mov ax,0x0600
mov cx,0
mov dx,0x174f
mov bh,0
int 0x10
ret
getkey:
mov ah,0x00
int 0x16
ret

[BITS 16]
begin_real_mode:
mov ax,cs
mov ds,ax
mov ss,ax
mov es,ax
mov sp,0x100

call clrscr
mov bp,boot_msg
mov cx,12D
call printmsg
call getkey
call clrscr
mov bp,pm_msg
mov cx,23D
call printmsg
call getkey
call clrscr
 
cli
lgdt [ gdtr ]
mov eax,cr0
or al,0x01
mov cr0,eax
jmp codesel:begin_proected_mode
[BITS 32]
begin_proected_mode:
mov ax,datasel
mov ds,ax
mov es,ax
mov ax,videosel
mov gs,ax
mov word [gs:0],0x0A41 
mov word [gs:2],0x0A42 
mov word [gs:4],0x0A43 
mov word [gs:6],0x0A44
  
jmp $
[BITS 16]

gdtr
dw gdt_end - gdt - 1
dd gdt
gdt
nullsel equ $-gdt
dd 0,0
codesel equ $-gdt
dw 0x0ffff ; 4G
dw 0x0000
db 0x00
db 0x09a
db 0x0cf
db 0x00
datasel equ $-gdt
dw 0x0ffff ; 4G 
dw 0x0000
db 0x00
db 0x092
db 0x0cf
db 0x00
videosel equ $-gdt
dw 3999 ; 80 cols * 25 * rows * 2bytes - 1
dw 0x8000
db 0x0b
db 0x92
db 0x00
db 0x00
gdt_end


times 510-($-$$) db 0
dw 0xAA55
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值