27 lines
757 B
NASM
27 lines
757 B
NASM
; 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 |