[org 0x7c00] ; bootloader offset mov bp, 0x9000 ; set stack mov sp, bp mov bx, MSG_REAL_MODE call print ; will be written after bios messages call enter_protected jmp $ ; will never really be executed %include "print.asm" %include "32bit_gdt.asm" %include "32bit_print.asm" %include "32bit_jump.asm" [bits 32] BEGIN_PROTECTED: ; 32bit entry mov ebx, MSG_PROT_MODE call print_string_pm ; Will be written in top left jmp $ MSG_REAL_MODE db "Welcome! Started in 16-bit protected mode" MSG_PROT_MODE db "Hello, world! 32-bit mode initialized successfully" ; bootsector times 510-($-$$) db 0 dw 0xaa55