startup.com主要代码

原创
2015/04/14 22:29
阅读数 117
 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

展开阅读全文
打赏
0
0 收藏
分享
加载中
更多评论
打赏
0 评论
0 收藏
0
分享
返回顶部
顶部