'만들면서 배우는 OS커널의 구조와 원리/제1장 부트스랩'에 해당되는 글 2건

  1. 2013.06.02 1. OS 없이 프로그램을 시행시킨다
  2. 2013.06.02 Boot Record Signature AA55 Not Found




			[org 0]
			[bits 16]

			jmp		0x07c0:start					; far jump

start:
			mov		ax, cs							; cs에는 0x07c0이 들어있다.
			mov		ds, ax							; ds = cs

			mov		ax, 0xb800						; 비디오 메모리의 세그먼트를
			mov		es, ax							; es 레지스터에 넣는다.
			mov		di, 0							; 제일 윗줄 처음에 쓸 것이다.
			mov		ax, word [msgBack]				; 써야 할 데이터의 주소 값을 지정한다.
			mov		cx, 0x07ff						; 0x07ff (10진수 2047)개의
													; word가 필요하다.

paint:
			mov		word [es:di], ax				; 비디오 메모리에 쓴다.
			add		di, 2							; 한 word를 썼으므로 2를 더한다.
			dec		cx								; 한 word를 썼으므로 cx의 값을 하나 줄인다.
			jnz		paint							; cx가 0이 아니면 다시 나머지를 쓴다.

			mov		edi, 0							; 제일 윗줄의 처음에 쓸 것이다.
			mov		byte [es:edi], 'D'
			inc		edi
			mov		byte [es:edi], 0x16
			inc		edi
			mov		byte [es:edi], 'o'
			inc		edi
			mov		byte [es:edi], 0x16
			inc		edi
			mov		byte [es:edi], 'n'
			inc		edi
			mov		byte [es:edi], 0x16
			inc		edi
			mov		byte [es:edi], '1'
			inc		edi
			mov		byte [es:edi], 0x06
			inc		edi
			mov		byte [es:edi], '2'
			inc		edi
			mov		byte [es:edi], 0x06
			inc		edi
			mov		byte [es:edi], '3'
			inc		edi
			mov		byte [es:edi], 0x06
;			inc		edi

			jmp		$								; 이 번지에서 무한루프를 돈다.

msgBack		db		'.', 0x67

times 510-($-$$)	db		0						; 여기서부터 509번지까지 0으로 채운다.
			dw		0xaa55							; 510번지에 0x55를, 511번지에 0xaa를 넣어둔다.


실행 결과



Posted by 쿨한넘

원문 : http://support.microsoft.com/kb/149877/en-us


Intel 기반 컴퓨터는 시스템 BIOS에 따라 부트스트랩 코드를 로드하고 실행합니다. BIOS 부트스트랩 루틴은 플로피 또는 하드 디스크의 첫 번째 섹터(CHS에서 0:0:1)를 메모리의 세그먼트 주소 0000:7C00H에 로드하는 int 0x19를 생성합니다. 마스터 부트 레코드(MBR)라고 하는 첫 번째 실제(Physical) 섹터는 주 부트스트랩 로더 코드를 포함합니다.


섹터 0을 로드한 후 BIOS는 그 섹터의 마지막 2바이트가 디스크에 나타나는 대로 55AA인지 확인합니다. 이 55AA를 부트 레코드 서명이라고 하는데 이는 섹터를 읽을 때 일종의 EOF와 같은 역할을 합니다. 부팅할 때 BIOS는 이 부트 레코드 서명을 요구합니다. 부트 레코드 서명이 없으면 BIOS에 따라 다르지만 아래와 같은 메시지가 나타납니다.


부트 레코드 서명 AA55를 찾을 수 없습니다. xxyy 발견.


또는 아래와 같은 메시지가 나타나거나


시스템 디스크 또는 부팅 가능한 디스크가 아닙니다.


아래와 같은 메시지가 나타나거나


F1 키를 눌러 다시 부팅하십시오.


또는 시스템이 응답하지 않습니다. 

Posted by 쿨한넘