aboutsummaryrefslogtreecommitdiffstats
path: root/boot/print.asm
diff options
context:
space:
mode:
authorClemens Fries <git-generic@xenoworld.de>2018-12-05 18:19:16 +0100
committerClemens Fries <git-generic@xenoworld.de>2018-12-05 18:26:39 +0100
commitbed5515c8dee2a19c1ba9dbc005e078c613e3cf3 (patch)
tree3d8ccff3af83a326ce2615bc19ddf627c25f53fb /boot/print.asm
parentce7317daf7c9740bc8595f14f7248fa1b050afcf (diff)
Move 'boot' stuff to boot/
Diffstat (limited to 'boot/print.asm')
-rw-r--r--boot/print.asm44
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