2011-08-13 8 views
8

임 취미용 OS 용 부트 로더를 작성하고 잘 작동하도록 노력하고 있습니다. 내가 처음 446 바이트가 부트 코드입니다 읽었습니다사용자 정의 부트 로더 문제

nasm -f bin loader.asm -o loader.bin 
dd if=loader.bin of=floppy.img bs=512 count=1 seek=0 

컴파일

BITS 16 
ORG 0 

start: jmp main 


OEM   db "Test OS "   
BytesPerSector:  DW 512 
SectorsPerCluster: DB 1 
ReservedSectors: DW 1 
NumberOfFATs: DB 2 
RootEntries: DW 224 
TotalSectors: DW 2880 
Media:  DB 0xf8 
SectorsPerFAT: DW 9 
SectorsPerTrack: DW 18 
HeadsPerCylinder: DW 2 
HiddenSectors: DD 0 
TotalSectorsBig: DD 0 
DriveNumber:  DB 0 
Unused:   DB 0 
ExtBootSignature: DB 0x29 
SerialNumber: DD 0xa0a1a2a3 
VolumeLabel: DB "HOBBY OS " 
FileSystem:   DB "FAT12 " 



main: 
    ;Adjust code Seg. 
    cli 
    mov ax, 0x07c0 
    mov ds, ax 
    mov es, ax 
    mov fs, ax 
    mov gs, ax 
    ;Set up Stack 
    mov ax, 0x0000 
    mov ss, ax 
    mov sp, 0xFFFF 
    sti 

    mov si, msg 
    call print 

print: 

    .charLoop: 

     lodsb 
     or al,al 
     jz .done 
     mov ah, 0x0E 
     int 0x10 
    .done 
     ret 

msg db "Hello World",13,10,0 

임과 447 바이트 - 509 파티션 테이블 : 아무것도 특별, 그냥 한 줄의 텍스트를 인쇄 .

dd if=loader.bin of=floppy.img bs=446 count=1 seek=0 

덮어 쓰지 파티션 테이블을 방지하기 위해 시도하지하지만 여전히 시가하는 : 내가 사용 후 시도했다. OSX와 Mac을 사용하고 버추얼

나는 중 VBOX에 floppy.img를 실행하고 코드가 잘 작동하지만로 OS를 테스트

임 내가 FAT 16 포맷 된 디스크에 부트 로더를 설치하려고 할 때, OSX는 포맷되지 않은 것처럼 디스크 이미지를 더 이상 읽을 수 없습니다.

정확한 디스크 남용 유틸리티는 Unable to attach image "floppy.img."(No Mountable File Systems)입니다. FAT 16 파일 시스템으로 디스크를 포맷 했는데도.

불행히도 이것이 내 첫 번째 게시물이기 때문에 사진을 드릴 수 없습니다.

정말 도움이됩니다. 디스크 구조는 실제로 나의 장점이 아닙니다.

답변

8

dd을 사용하는 경우 conv=notrunc 옵션을 추가하십시오. 이렇게하면 파일을 잘라내려고하지 않고 지정된 부분을 덮어 씁니다.

+1

정말 고마워요. 나는 결코 짐작하지 않았을 것이다. –