自制操作系统 第2步
来源:互联网 发布:地形数据涉密规定 编辑:程序博客网 时间:2024/05/21 07:08
!boot.s bootsect.s框架 .globl begtext,begdata,begbss,endtext,enddata,endbss .text begtext: .data begdata: .bss begbss: .text BOOTSECT = 0x07c0 SETUPLEN = 4SETUPSEG = 0x0c20CYLS = 10 entry start start: jmpi go,BOOTSECTgo: mov ax,cs mov ds,ax mov ax,#0x0800 !磁盘内容加载起始地址c0-h0-s2,启动扇区c0-h0-s1 有bios加载 mov es,ax !读取下一个512字节!启动扇区是由bios来加载的,所以我们只需要加载剩下的扇区就行!es 已经在前面设置过 line=22load_setup:xor dx,dx !DH 0,DL 0mov cx,#0x0002 !CH 0, CL 2mov bx,#0x0200 !读取到内存的位置mov ax,#0x0200+SETUPLEN !AH 02,AL 4 一次读取4个扇区int 0x13jnc ok_load_setupxor dx,dx !重启软盘xor ax,ax int 0x13jload_setupok_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,dlmov ah,#0x08int 0x13xor ch,ch !我们实质获取的是每磁道扇区个数 cl seg csmov sectors,cx !ch sectors,cl track!mov ax,#INITSET bootsect 自搬移地址!mov es,ax !因为上面去磁盘参数中断改了es的值! Print some inane messagemov ah,#0x03xor bh,bhint 0x10mov cx,#9mov bx,#0x0007mov bp,#msg1mov ax,#0x1301int 0x10!加载system代码!即保护模式汇编,先不写!movax,#SYSSEG!moves,ax! segment of 0x010000!callread_it!callkill_motor!查找文件系统所在位置!先略过!跳转到setup中执行!jmpi 0,SETUPSEGfin:jmp fin!用于记录信息sectors:.word 0msg1:.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
- 自制操作系统 第2步
- 自制操作系统 第1步
- 自制操作系统 第3步
- 自制操作系统 第4步
- 自制操作系统 第5步
- 自制操作系统 第6步
- 《30天自制操作系统》第2天
- 自制OS 第7步
- 30自制操作系统第三天
- 30天自制操作系统笔记 第2天
- 《30天自制操作系统》学习笔记--第2天
- 30天自制操作系统-第2天
- 30天自制操作系统-第2天心得笔记
- 自制操作系统--(2)
- 自制操作系统---eposide 2
- 《30天自制操作系统》第一天
- 30天自制操作系统-第一天
- 30天自制操作系统-第三天
- 网络编程小知识——linux网络相关头文件
- android 常见的错误问题
- Tyvj_P3314 苹果摘陶陶(快排)
- Ubuntu 12.04 sogou_input 崩溃原因以及解决方案
- mac上安装MySql
- 自制操作系统 第2步
- 使用相机时切入后台报错:Thread1:EXC_BAD_ACCESS(code=1,address=0x1)解决办法之一
- HDU_1176免费馅饼
- eclipse安装插件!长时间停留在calculating requirements and dependencies 的解决方案
- 使用Leopard特殊参数简化Controller方法参数编写
- 入门专题第二题 poj 2965 The Pilots Brothers' refrigerator
- django-自带admin后台如何给某些field赋默认值(比如user=request.user)然后隐藏它
- 数据转换excel操作 Microsoft.Office.Interop.Excel.dll的使用
- 解决看优酷,土豆等flash视频时,看着看着就出现感叹号的深刻问题