맞춤 운영 체제를 만들고 있습니다. 나는 두 NASM 파일이 :OS의 부트 로더가 작동하지 않습니다.
boot.asm :
[BITS 16] ;tell the assembler that its a 16 bit code
[ORG 0x7C00] ;Origin, tell the assembler that where the code will
;be in memory after it is been loaded
INT 0x13
JMP $ ;infinite loop
TIMES 510 - ($ - $$) db 0 ;fill the rest of sector with 0
DW 0xAA55 ; add boot signature
start.asm :
nasm boot.asm -f bin -o boot.bin
nasm start.asm -f bin -o start.bin
: 나는이 명령을 사용하여 .BIN 파일로 컴파일
[BITS 16]
MOV AL, 72
CALL PrintCharacter
MOV AL, 101
CALL PrintCharacter
MOV AL, 108
CALL PrintCharacter
MOV AL, 108
CALL PrintCharacter
MOV AL, 111
CALL PrintCharacter
MOV AL, 44
CALL PrintCharacter
MOV AL, 32
CALL PrintCharacter
MOV AL, 87
CALL PrintCharacter
MOV AL, 111
CALL PrintCharacter
MOV AL, 114
CALL PrintCharacter
MOV AL, 108
CALL PrintCharacter
MOV AL, 100
CALL PrintCharacter
MOV AL, 33
CALL PrintCharacter
PrintCharacter:
MOV AH, 0x0E
MOV BH, 0x00
MOV BL, 0x07
INT 0x10
RET
TIMES 512 - ($ - $$) db 0
그런 다음 다음 명령을 사용하여 플로피 이미지에 추가하십시오 :
dd if=boot.bin bs=512 of=MyOS.img count=1
dd if=start.bin bs=512 of=MyOS.img count=2
VirtualBox의 플로피 이미지에서 부팅 할 때 느낌표가 2 개 표시되고 QEmu (Q.app)로 부팅되지 않습니다. 나는 OS 개발에 익숙하지 않아 누군가가 내게 잘못한 것을 말해주고 내 OS를보다 잘 설정하는 방법에 대한 조언을 해주면 좋을 것이다.
감사합니다. 나는 무한 루프를 시작했다. 이제는 작동한다. 하지만 여전히 QEmu로 부팅 할 수는 없습니다. – None
QEMU에 대해 모르겠다. 나는 단지 추측 할 수 있습니다 : 아마도 여러분의 첫 번째 지시 (INT 0x13h)가 범인 일 것입니다. QEMU가 시작시 다르게 설정된 레지스터를 가질 수 있으며 인터럽트 호출이 원하는 것을 수행하지 않을 수 있습니다. 명시 적으로 레지스터를 설정해보십시오 ('AH = 02, AL = 01, ...'). 또는 QEMU가 플로피 드라이브를 에뮬레이션하지 않아 부팅 프로그램을로드 할 수 없습니다. - 나는'boot.asm'에서 정확히 무엇을하는지 이해하지 못한다. 'start.asm'을 메모리에로드하고 그곳으로 점프 *해서는 안되나요? – stakx
start.asm의 주요 내용을 boot.asm에 넣으면 제대로 작동합니다. – None