format elf use32 MULTIBOOT_PAGE_ALIGN equ (1 shl 0) MULTIBOOT_MEMORY_INFO equ (1 shl 1) MULTIBOOT_VIDEO_REQUEST equ (1 shl 2) MULTIBOOT_AOUT_KLUDGE equ (1 shl 16) MULTIBOOT_HEADER_MAGIC equ 0x1BADB002 MULTIBOOT_HEADER_FLAGS equ MULTIBOOT_PAGE_ALIGN or MULTIBOOT_MEMORY_INFO or MULTIBOOT_VIDEO_REQUEST MULTIBOOT_CHECKSUM equ -(MULTIBOOT_HEADER_MAGIC + MULTIBOOT_HEADER_FLAGS) .multiboot: align 4 dd MULTIBOOT_HEADER_MAGIC dd MULTIBOOT_HEADER_FLAGS dd MULTIBOOT_CHECKSUM dd 0 ; header address dd 0 ; load address dd 0 ; load end address dd 0 ; bss end address dd 0 ; entry address dd 0 ; video mode_type (0:fb, 1:txt) (set flags[2]!) dd 1024 ; video width dd 768 ; video height dd 32 ; video depth section '.bss' writable align 16 stack_bottom: rb 16384 stack_top: section '.text' executable public _start extrn kmain _start: ; Setup stack mov esp, stack_top ; Call the main kernel function. push ebx push eax call kmain @@: cli hlt jmp @b