Su Main的主要代码startup.com的入口代码
[bits 16]
[section .text]
org 0
Start:
jmp RealStart ;地址为0x20000
times 512-($-$$) db 0
RealStart:
mov ax,cs
mov ss,ax
mov ds,ax
xor eax,eax
xor ecx,ecx
xor edx,edx
xor ebx,ebx
xor esi,esi
xor edi,edi
xor ebp,ebp
mov esp,SuStack
call SuMain
SuMain:
push bp
mov bp,sp
call ConstructMemoryDescriptors ;建立和物理内存的描述符
call EnableA20 ;开启A20 80286处于实模式下时,防止用户程序访问到100000h~10FFEFh之间的内存(高端内存) 如果读写0x10ffef实际上是0x0ffef
call Relocatex86Structures ;重定位GDT和IDT(最感兴趣的全局描述符表和中断描述符表)
push word 0
call EnableProtectPaging ;开启保护模式,但是不开启分页机制。经常搞得禁用cr0
add sp,2
push dword BootRecord.OsLoaderEnd
push dword BootRecord.OsLoaderStart
call RelocateLoaderSections ;加载osloader到0x00400000
add sp,8
push eax
call TransferToLoader ;把系统控制权转给osloader
add sp,4
mov sp,bp
pop bp
retn
startup.com主要代码
点赞
收藏