自制操作系统 第2步

!boot.s  bootsect.s框架  
.globl begtext,begdata,begbss,endtext,enddata,endbss  
.text  
    begtext:  
.data  
    begdata:  
.bss  
    begbss:  
.text  
BOOTSECT = 0x07c0  
SETUPLEN = 4
SETUPSEG = 0x0c20
CYLS = 10  

entry start  
start:  
    jmpi go,BOOTSECT
go:  
    mov ax,cs  
    mov ds,ax     


	mov ax,#0x0800 !磁盘内容加载起始地址c0-h0-s2,启动扇区c0-h0-s1 有bios加载
    mov es,ax  

!读取下一个512字节
!启动扇区是由bios来加载的,所以我们只需要加载剩下的扇区就行
!es 已经在前面设置过 line=22

load_setup:
	xor dx,dx      !DH 0,DL 0
	mov cx,#0x0002 !CH 0, CL 2
	mov bx,#0x0200 !读取到内存的位置
	mov ax,#0x0200+SETUPLEN !AH 02,AL 4 一次读取4个扇区
	int 0x13
	jnc ok_load_setup
	xor dx,dx     !重启软盘
	xor ax,ax 
	int 0x13
	j	load_setup

ok_load_setup:
! ah = 0x08 dl = 驱动器号(如果是硬盘则要置位7 为1)。
! 返回信息:
! 如果出错则CF 置位,并且ah = 状态码。
! ah = 0, al = 0, bl = 驱动器类型(AT/PS2)
! ch = 最大磁道号的低8 位,cl = 每磁道最大扇区数(位0-5),最大磁道号高2 位(位6-7)
! dh = 最大磁头数, dl = 驱动器数量,
! es:di -.. 软驱磁盘参数表。
	xor dl,dl
	mov ah,#0x08
	int 0x13
	xor ch,ch      !我们实质获取的是每磁道扇区个数 cl 
	seg cs
	mov sectors,cx !ch sectors,cl track
	
	!mov ax,#INITSET  bootsect 自搬移地址
	!mov es,ax      !因为上面去磁盘参数中断改了es的值

! Print some inane message
	mov ah,#0x03
	xor bh,bh
	int 0x10

	mov cx,#9
	mov bx,#0x0007
	mov bp,#msg1
	mov ax,#0x1301
	int 0x10

!加载system代码
!即保护模式汇编,先不写
!	mov	ax,#SYSSEG
!	mov	es,ax		! segment of 0x010000
!	call	read_it
!	call	kill_motor

!查找文件系统所在位置
!先略过
!跳转到setup中执行
!	jmpi 0,SETUPSEG
fin:
	jmp fin

!用于记录信息
sectors:
	.word 0	

msg1:
	.byte 13,10
	.ascii "Leading"


.org 510  
    .word 0xaa55  
  
.text  
    endtext:  
.data  
    enddata:  
.bss  
    endbss: 


//真的是历经千辛万苦但是给挂了,看Linux-0.0.2也没有写fat12的文件格式,运行的不是好好的嘛。 苦思中。。。

//写一个操作系统太耗时了,基本从中午2点到晚上两点,还么打通一关,关键是好久没写汇编了,伤心

//现在把bootsetc.S 基本上给读懂了,发布下给大家参考


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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值