diff options
Diffstat (limited to 'boot/print.asm')
-rw-r--r-- | boot/print.asm | 44 |
1 files changed, 44 insertions, 0 deletions
diff --git a/boot/print.asm b/boot/print.asm new file mode 100644 index 0000000..97acd8b --- /dev/null +++ b/boot/print.asm @@ -0,0 +1,44 @@ +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 |