自制X86操作系统(1)-系统引导篇2

这篇博客介绍了自制X86操作系统的过程,重点关注系统引导和FAT12文件系统的实现。作者通过示例代码解释了如何读取FAT表并映射到内存中,同时提供了512B.ASM、FAT12.ASM和INC.ASM等关键文件的编译和制作OS映像的步骤。文章还包含了程序在RAM中的映射、FAT12映射图及程序运行图,帮助读者理解操作系统的启动流程。
摘要由CSDN通过智能技术生成

前面已经接管引导权了,只能玩玩,什么都不能做,接下来要做正事了!以软盘1.44M,和FAT12系统为例(为了简单些)

512B.ASM文件:

						ORG 0X7C00
BS_jmpBOOT					JMP NEAR BOOT_BEGIN
						%INCLUDE "FAT12.ASM"
						%INCLUDE "INC.ASM"
BASE_STACK_ADDR			EQU	50H					;(SS)堆栈基地址,500H-900H 1K堆栈
OFFS_STACK_ADDR			EQU	400H					;(SP)堆栈栈顶地址
DIR_SECTOR_NUM			EQU	14					;根目录占用扇区
DIR_SECTOR_HEAD			EQU	19					;根目录起始扇区
SECTOR_RAM_BASE_ADDR		EQU	1B0H					;500H+400H+1200H=1B00H,临时区或OSLDR复制到RAM地址
SECROT_RAM_OFFS_ADDR		EQU	0					;临时区或OSLDR复制到RAM偏移地址
DEFINE_FILE_NAME			DB	'OSLDR      '				;文件名
READ_FAT_BASE_ADDR		EQU	90H					;FAT复制到内存基地址
READ_FAT_OFFS_ADDR		EQU	0					;FAT复制到内存偏移地址
READ_FAT_HEAD_NUM		EQU	1					;FAT表起始扇区号,INT13H
READ_FAT_SECTOR_SIZE		EQU	9					;FAT表占用扇区数
READ_FAT_DRV_NUM			EQU	0					;中断13的驱动器号
READ_FAT_SEC_PER			EQU	18					;每磁道扇区数

BOOT_BEGIN:
						MOV		AX,CS
						MOV		DS,AX
						MOV		ES,AX
						MOV		AX,BASE_STACK_ADDR
						MOV		SS,AX
						MOV		SP,OFFS_STACK_ADDR
					
						XOR		AH,AH
						XOR		DL,DL
						INT		13H
						CALL		READ_FILE
						CMP		WORD[SCAN_FILE_NAME_VAR_DSN],0
						JZ		NO_BOOT_FILE
						CMP		WORD[SCAN_FILE_NAME_VAR_DSN],0FF7H
						JZ		DISK_DAMAGE						
						JMP		SECTOR_RAM_BASE_ADDR:SECROT_RAM_OFFS_ADDR
						
						NO_BOOT_FILE:
						MOV		BP,No_boot_file_disp
						JMP		SHORT	Display_information
						DISK_DAMAGE:
						MOV		BP,Disk_damage_disp
						Display_information:
						MOV		AX,CS
						MOV		ES,AX
						MOV		CX,13
						MOV		AX,1301H
						MOV		BX,0CH
						MOV		DX,0
						INT		10H
						JMP		SHORT	$

Disk_damage_disp		DB		"Disk Damage. "
No_boot_file_disp		DB		"No Boot File."
TIMES	510-
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值