2014-02-18 3 views
1

어셈블리 언어를 공부 중이며 부팅 가능한 그래픽 게임을 만들기 위해 http://mikeos.berlios.de/write-your-own-os.html 단계를 수행했지만 문제가 있습니다. 512 바이트 이상의 메모리를 사용할 수 없습니다. 내 프로그램을 위해서.내 부팅 가능 플로피 512 바이트 이상을 사용하는 방법

이 문제를 어떻게 해결할 수 있습니까?

감사합니다. 여기

내 코드 (여전히 작은 512 바이트 이하) : http://pastebin.com/i6ehx8dT

편집 : 마지막으로이 http://pastebin.com/x1SawyjN

: 나는 여기에 내 문제, 어셈블리 언어로 만든 플로피 부트 로더의 최소 예를 들어 16 비트를 해결 링크는 매우 유용하게했다 : http://www.nondot.org/sabre/os/files/Booting/nasmBoot.txt

+0

링크 된 기사의 맨 아래에는 질문에 대한 자세한 답변이 나와 있습니다. –

+0

답장을 보내 주셔서 감사 드리며,이 정보를 이해하고 다른 시간에 코드를 작성하려고 노력하겠습니다. –

답변

2

이 easiely 수행되지 않습니다

사실에서 BIOS 만 t을로드 그는 처음 512 바이트의 디스크를 메모리에 저장합니다.

그러면 수행해야 할 작업은 나머지 데이터를 메모리에로드하는 것입니다. 이것은 일반적으로 인터럽트 13h (하위 함수 AH = 2 또는 AH = 42h)를 사용하여 수행됩니다.

디스크에서 데이터의 위치를 ​​정확하게 알면 매우 쉽습니다. 이런 이유로 GRUB와 같은 부트 로더는 잘 알려진 위치를 사용합니다. 불행히도 이러한 위치는 때때로 복사 방지 드라이버 같은 다른 프로그램으로 덮어 씁니다.

잘 정의 된 파일 시스템 (예 : FAT 또는 NTFS)에서로드해야하는 경우 더 까다 롭습니다. 파일 시스템이 내부적으로 512 바이트 중 ~ 60 개를 사용하기 때문에 ~ 450 바이트의 공간 만 있습니다) 파일 시스템의 데이터를 해석하는 코드는 코드가 들어있는 파일을 찾아서 메모리에로드합니다!

+0

답변을 주셔서 감사합니다. 이제이 URL을 따르고 있습니다. www.nondot.org/sabre/os/files/Booting/nasmBoot.txt 마지막 예입니다. 그러나 작동하지 않습니다. –

관련 문제