; kernel.asm [BITS 16] ; 여전히 16비트입니다. [ORG 0x8000] ; 부트로더가 우리를 0x8000에 내려줬으므로 기준 주소를 맞춥니다. kernel_entry: ; 커널이 실행되었다는 메시지 출력 mov si, msg_kernel call print_string ; 할 일 다 했으니 죽기 (무한 루프) cli ; 인터럽트 끄기 (방해 금지) hlt ; CPU 정지 (전력 소모 최소화) jmp $ ; 혹시 깨어나면 다시 제자리 걸음 ; --- 문자열 출력 함수 (부트로더와 동일) --- print_string: mov ah, 0x0E .loop: lodsb cmp al, 0 je .done int 0x10 jmp .loop .done: ret msg_kernel db "Hello from BARE METAL KERNEL!", 0x0D, 0x0A, 0