'Bootloader'에 해당되는 글 1건

  1. 2008/07/16 귀차니스트 어제 무작정 맹글어봤던 것입니다.. (2)



  그냥 무턱대고 삽질을 감수한 뒤에 맹글어본 간단한 부트로더 입니다. 친구이름을 찍어서 스샷을 보내주느라 문자열이 DongWoo Kerenl이 되어버렸군요. OS제작을 위해서 예전에 잡다하게 모아두었던 자료에서 필요한 자료를 빼내 썼습니다. 처음에 MASM으로 만들려고 했는데, link가 없어서 그런건지 약간 이상하여 그냥 맘편하게 nasm으로 만들었습니다.

bootloader.asm (Language : asm)
  1. [org 7C00h]
  2. %macro PRINT 1
  3.     pop dx
  4.     mov di, %1
  5.     mov ah, 0Eh
  6.     xor bx, bx
  7.     mov cx, 14
  8. printloop:
  9.     mov al, byte[di]
  10.     int 10h
  11.     inc di
  12.     loop printloop
  13. %endmacro
  14. EntryPoint:
  15.     mov ax, 1301h
  16.     mov bx, 0007h
  17.     mov cx, 14
  18.     mov dh, 0
  19.     mov dl, 0
  20.     mov bp, MSGLOAD
  21.     int 10h
  22.     ;PRINT MSGLOAD
  23. Loading:
  24.     jmp Loading
  25. MSGLOAD equ $
  26.     db "Loading Kernel"
  27. times 510-($-$$)    db 0
  28.     dw 0AA55h

  그렇게 복잡한 것은 아니라는 사실을 알 수 있습니다. 다만 그냥 문자열 출력만 되게 만들어 놔서 Loading 라벨에서 계속 Hang up상태의 무한 루프를 돌고 있다는 것을 알 수 있지요. 여기서 문자열 혹은 .문자를 출력하며 하드디스크 인터럽트로 읽어가며 메인 커널 데이터를 읽어오면 될 것 같습니다. 오늘 빨리 퇴근한 김에 해보려고 하는데 잘 될지 모르겠군요^^.
  다 알고 시작하는 늦은 것에 너무 지치기도 하여 그냥 무작정 달려들긴 했지만 앞이 조금 불투명 하긴 하군요. 그래도 나름 잘 되리라 생각합니다.

크리에이티브 커먼즈 라이센스
Creative Commons License
2008/07/16 19:55 2008/07/16 19:55

댓글을 달아 주세요

  1. kkamagui 2008/07/20 04:26  댓글주소  수정/삭제  댓글쓰기

    와우~ 멋지네 ㅋㅋ 홧팅이당 >ㅁ<;)-b