FAT12과 FAT16의 부트레코드의 구성이 같은모양인가 보다
음.......; 전에 했던거지만
나중에 다시 찾아볼일이 있거나
필요한 사람이 있을까봐 다음을 기록한다
ORG 0x7c00
;Fat12 FileSystem BootRecord
;문자열(String)일 경우에 꼭 최고 바이트를 맞춰야하며,
;적기싫다면 공백으로(space) 채워넣어야만 한다
;그리고 이위에는 (BR을 유지하기 위해) 어떤 코드라도 들어가면 안된다
;(Vmware에서는 상관않는 모양이지만,Qemu에서, 이걸제대로 하지안으면 작동이 안된다.
;필히 밎의 jmp로 따로 만든 레이블로 점프하게 하자
jmp register_init ;Jump Boot Code
db 0x90 ;Jump Boot Code Padding
db "LolyComp" ;OEM Name (String,MAX 8Byte)
dw 512 ;Bytes Per Sector
db 1 ;Sector Per Cluster
dw 1 ;Reserved Sector Count
db 2 ;Number of FATs
dw 224 ;Boot Entry Count
dw 2880 ;Total Sector 12(16)
db 0xf0 ;Media 여기선 Floppy Disk,보통은 HDD면0 ,자세한건 링크를 참조..
dw 9 ;Fat Size 12(16)
dw 18 ;Sector Per Track
dw 2 ;Number of Heads
dd 0 ;Hidden Sector
dd 2280 ;Total Sector
db 0 ;Driver Number
db 0 ;Reserved1
db 0x29 ;Boot Signature
dd 0xffffffff ;Volume ID
db "My_os_VOL " ;Volume Lable (String 11 Byte)
db "FAT12 " ;File System Type (String 8 Byte)
RESB 18 ;Padding (왜 채워주는건진 잘 모르겠다)
register_init:
;...여기서부터 레지스터 초기화 들어갑니다~
자세한 설명은 다음 링크를 참조하면 답이 나옵니다
FAT12 bootrecord랑 FAT16 bootrecord의 구조가 같으므로 FAT16을 참고...
표(?)그림(?)을 보면 단박에 이해가 갈거라고 확신합니다.
http://network.hanb.co.kr/view.php?bi_id=1259
ORG 0x7c00의 정체..
왜 하마터면 0x7c00 인가? 하고 KLDP에 질문한적이 있는데.
그에 따라오는 답변은 아주 간단명료 했다.. 처음에 IBM아저씨들이 그렇게 정했으니까..
랍니다.. 꼭 이값을 쓰는 특별한 목적은 없는건지,아니면 이값자체가 그리 큰 의미가
없나봅니다. 뭐 책에도 나와있긴했지만(책 사기전이였거든요)
파일시스템.
FAT파일 시스템만 대충 봐둔게 좀 도움이 되네요..
문제는 뒤에는 몰라..겠지만... 이거 과연 스터디나 할수 있을지..
'Programming > System' 카테고리의 다른 글
gdb 에서 thread 생성/종료 메세지 안나오게 하기 (2) | 2010.08.18 |
---|---|
mmap 사용시 알아둘 사항 (버스오류) (0) | 2010.05.31 |
부트섹터에서 프로그램 실행시키기. (14) | 2007.07.21 |
압축플때 쓰는 쉘 스크립트 (4) | 2007.06.18 |
MBR(?) 출력 하기 (2) | 2007.06.17 |