Advertisement
Guest User

MASM basic kernel

a guest
Dec 4th, 2010
108
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
  1. .686 ;32 bit code
  2. .Model flat, StdCall ;32 bit memory model
  3. Option CaseMap:none ;case sensitive
  4.  
  5. ; setting up the Multiboot header - see GRUB docs for details
  6. .Const
  7.     MODULEALIGN Equ 1 Shl 0 ; align loaded modules on page boundaries
  8.     MEMINFO Equ 1 Shl 1 ; provide memory map
  9.  
  10. Align 4
  11. .Data
  12.     MAGIC DD 1BADB002h 
  13.     FLAGS DD (MODULEALIGN or MEMINFO)
  14.     CHECKSUM DD (-(1BADB002h + (MODULEALIGN or MEMINFO)))
  15.  
  16. Align 4
  17. .Data?
  18.     Stack Byte 4000h Dup(?)
  19. .Code
  20.     Start:
  21.         Mov Ecx, Offset Stack
  22.         Add Ecx, 4000h
  23.         Mov Esp, Ecx; set up the stack
  24.         push eax ; pass Multiboot magic number
  25.         push ebx ; pass Multiboot info structure
  26.         call kmain ; call kernel proper
  27.         cli
  28.         hang:
  29.             hlt ; halt machine should kernel return
  30.             jmp hang
  31.         kmain:
  32.             Pop Eax
  33.             Pop Ebx
  34.             Mov Ah, 65
  35.             Mov Ecx, 0B80000h
  36.             Mov Byte Ptr[Ecx], Ah
  37.             Mov Ah, 07h
  38.             Inc Ecx
  39.             Mov Byte Ptr[Ecx], Ah
  40.     End Start
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement