自制X86操作系统(1)-系统引导篇3(保护模式)

本文介绍了如何从实模式切换到保护模式,重点解析了OSLDR.ASM中的段描述符,包括P位、DPL位、DT位、TYPE位等,并详细解释了不同类型的段(数据段、代码段)的各种属性,如W位、ED位、R位、C位和粒度位G及D位的功能。通过理解这些内容,读者可以更好地理解X86操作系统的保护模式切换过程。
摘要由CSDN通过智能技术生成

最近忙着画X86主板没能及时写操作系统,时隔3月前面代码又复习下,应该到保护模式了。
OSLDR.ASM:

						JMP		BEGIN_OSLDR
LABEL_GDT:				DQ			0		;保留
LABEL_CODE:				DQ			0X00C09A0000000000	;C09A根据附表
LABEL_VIDE:				DQ			0X00C0920B8000FFFF	;C092根据附表,000B8000H为显存地址,界限FFFFH
GdtPtr					DW			24		;3x8字节=24
					DD			0
SelectorCODE			EQU			LABEL_CODE	-	LABEL_GDT
SelectorVIDE			EQU			LABEL_VIDE	-	LABEL_GDT
BEGIN_OSLDR:
						XOR		EAX,EAX
						MOV		AX,CS
						MOV		DS,AX
						MOV		ES,AX
						SHL		EAX,4
						ADD		EAX,CODE32_ADDR	;把CODE32_ADDR物理地址存入LABEL_CODE指定位
						MOV		WORD[LABEL_CODE + 2],AX	;基地址0-15位
						SHR		EAX,16
						MOV		BYTE[LABEL_CODE + 4],AL	;基地址16-23位
						MOV		BYTE[LABEL_CODE + 7],AH	;基地址24-31位
						XOR		EAX,EAX
						MOV		AX,DS
						SHL		EAX,4			;段基值x10H+偏移量
						ADD		EAX,LABEL_GDT		;EAX=LABEL_GDT物理地址
						MOV		DWORD[GdtPtr+2],EAX
						LGDT		[GdtPtr]
						CLI
						I
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值