Eine Minute
Hello, World! Kernel in NASM Assambler
In diesem Blogpost möchte ich einen einfach "Hello, World!" Kernel vorstellen. Den Kernel kann man z. B. mit QEMU ausführen. Wie das geht, beschreibt der verlinkte Blogpost.
; nasm -f elf -o test.o kernel.asm
; ld -melf_i386 -Ttext=0x100000 -e start test.o
section .data
message db "hello, world!"
msglength equ $ - message
section .text
global start
; MB_MAGIC 0x1badb002 (Version 0.6.96)
; MB_MAGIC 0xe85250d6 (Version 1.6.)
; MB_FLAGS 0x0
; MB_CHECKSUM -(MB_MAGIC + MB_FLAGS)
; Multiboot Header
align 4
dd 0x1badb002
dd 0x0
dd -(0x1badb002 - 0x0)
start:
mov ebx, 0
print:
mov eax, [message + ebx]
mov [0xb8000 + ebx * 2], eax
mov [0xb8000 + ebx * 2 + 1], dword 0x07
add ebx, 1
cmp ebx, msglength
jnz print
stop:
cli
hlt
jmp stop