;文件说明:硬盘主引导扇区代码
core_base_address equ 0x00040000;常数,内核的起始内存地址
core_start_sector equ 0x00000001;常数,内核的起始逻辑扇区号
;初始化堆栈段和栈指针
mov ax,cs
mov ss,ax
mov sp,0x7c00
;计算GDT所在的逻辑段地址
mov eax,[cs:pgdt+0x7c00+0x02];GDT的32位物理地址
xor edx,edx
mov ebx,16
div ebx;分解成16位逻辑地址
mov ds,eax;让DS指向该段以进行操作0x07e0
mov ebx,edx;段内起始偏移地址0000
;跳过0#号描述符的槽位
;创建1#号描述符,这是一个数据段,对应0~4GB的线性地址空间
mov dword[ebx+0x08],0x0000ffff;基地址为0,段界限为0xFFFFF
mov dword[ebx+0x0c],0x00cf9200;粒度为4KB,存储器段描述符
;创建保护模式下初始化代码段描述符
mov dword[ebx+0x10],0x7c0001ff;基地址为0x00007c00,界限为0x1FF
mov dword[ebx+0x14],0x00409800;粒度为1个字节,代码段描述符
;建立保护模式下的堆栈段描述符
mov dword[ebx+0x18],0x7c00fffe;基地址为0x00007c00,界限为0xffffe
mov dword[ebx+0x14],0x00cf9600;粒度为4KB
;初始化描述符表寄存器GDTR
mov word[cs:pgdt+0x7c00],39;描述符表的界限(总字节大小-1)
lgdt [cs:pgdt+0x7c00];安装描述符符寄存器GDTR
in al,0x92
硬盘主引导扇区代码
最新推荐文章于 2021-05-13 08:10:49 发布
本文深入探讨硬盘的主引导扇区,解析其在启动计算机过程中的关键作用。内容包括主引导扇区的结构、作用原理,以及如何编写和修改主引导扇区代码。
摘要由CSDN通过智能技术生成