2013-03-28 3 views
2

나는 리얼 모드 코딩을 X86에 접근하고, 나는 몇 가지 예제 코드 여기 발견에서로드 : http://www.nondot.org/sabre/os/files/Booting/nasmBoot.txtI386 리얼 모드 - 플로피

그 기사의 세 번째 예는 사용하여 메모리에있는 플로피의 몇 가지 분야를로드 BIOS는 리얼 모드에서 호출 한 다음 점프합니다. 간단한 부트 로더입니다. 제 2 섹터에서 5 섹터를로드합니다. 두 번째 섹터 (첫 번째 섹터의 512 바이트 이후)에는 일부 텍스트를 인쇄하기위한 몇 가지 지침이 있습니다.

글쎄, 나는 그것을 컴파일하고 바이너리를 시도했지만 텍스트가 출력되지 않는다. 이 장애를 재현하고 그것을 고치는 법을 말해 줄 수 있습니까?

귀하의 도움에 감사 드리며, 제 질문의 진부한 점에 대해 사과드립니다. (그러나 나는 어디가 잘못되었는지 알 수 없다).

답변

3

qemu를 사용하는 경우 이미지를 섹터 크기의 정수 배로 채워야합니다. 1+ 당신이 (총 길이 패드에있을 수 있습니다 다른 에뮬레이터와

nasm -f bin -o image.bin image.asm 
qemu-system-i386 -fda image.bin 

:

는 image.asm의 끝이 추가 :

times 512*2-($-$$) db 0 

그리고 조립 및 실행 5) * 512 또는 심지어 전체 길이의 플로피 (1474560 바이트).

+2

고맙습니다. 작동합니다! 제무가 왜이 패딩이 필요한지 아십니까? – mghis

+0

@mghis 잘 모르겠습니다. 이것은 [qemu-devel] (https://lists.nongnu.org/mailman/listinfo/qemu-devel) 메일 링리스트에 대한 질문입니다. –

0

내가 말할 수있는 한 가지 사실은 해당 코드가 스택이 1000h:0000 근처에 있지 않음을 보장하지 않는다는 것입니다.

관련 문제