부트로더

  • PC가 처음 부팅되었을 때 로드 되고 실행
  • 디스크 상의 커널 프로그램을 램으로 읽어들여 커널이 실행되도록 하는 명령 수행

kernel.bin 복사 루틴

read:
	mov ax, 0x1000
	mov es, ax
	mov bx, 0
	
	mov ah, 2
	mov al, 1
	mov ch, 0
	mov cl, 2
	mov dh, 0
	mov dl, 0
	int 0x 13
	
	jc read

PC 부팅 시 BIOS가 MBR을 읽어 0x7C00에 복사하고, 프로그램을 이곳으로 점프 시킴

read: 이후의 부분을 실행시켜 바로 뒤 섹터에 kernel.bin을 0x10000번지에 복사

int 0x13의 BIOS 콜을 사용(소프트웨어 인터럽트를 걸어 잠시 BIOS에 있는 프로그램 실행)

사용한 BIOS 콜은 “어느 섹터부터 몇 개의 섹터를 읽어라”

  • 복사 목적지의 주소 값을 es:bx 형태로 주어야 함

  • ah: 서비스 번호 (BIOS 콜의 번호)

  • al: 몇 섹터를 읽을 것인지

  • ch: 사용할 실린더 값

  • cl: 몇 번째 섹터부터 읽을 것인지

  • dh: 헤드 값

  • dl: 드라이브 번호

pic2