org 7C00h jmp _start hello: db 'Hello from the first stage!', 0x0A, 0x0D, 0x0 _start: ; print hello message mov ah, 0x0E xor esi, esi xor edi, edi mov si, hello cld .loop: lodsb cmp al, 0x00 je .out int 0x10 jmp .loop .out: ; load sectors from disk and jump there mov ah, 0x02 ; load sectory from disk mov al, 0x01 ; load one sector xor ch, ch ; cylinder number mov cl, 0x02 ; start from sector 2 xor dh, dh ; head number xor dl, dl ; drive number mov bx, 0x0500 ; start address (see jmp) ; 0x00000500 to 0x00007BFF, from Overview at http://wiki.osdev.org/Memory_Map_%28x86%29 int 0x13 jmp 0x0500 jmp $ ; stolen from: https://en.wikibooks.org/wiki/X86_Assembly/Bootloaders times 0200h - 2 - ($ - $$) db 0 ;Zerofill up to 510 bytes dw 0AA55h ;Boot Sector signature