bits 16
org 0x7c00
start: jmp loader
;******; ; OEM Parameter block ;********;
TIMES 0Bh-$+start DB 0; THIS LINE
bpbBytesPerSector: DW 512
bpbSectorsPerCluster: DB 1
bpbReservedSectors: DW 1
bpbNumberOfFATs: DB 2
bpbRootEntries: DW 224
bpbTotalSectors: DW 2880
bpbMedia: DB 0xF0
bpbSectorsPerFAT: DW 9
bpbSectorsPerTrack: DW 18
bpbHeadsPerCylinder: DW 2
bpbHiddenSectors: DD 0
bpbTotalSectorsBig: DD 0
bsDriveNumber: DB 0
bsUnused: DB 0
bsExtBootSignature: DB 0x29
bsSerialNumber: DD 0xa0a1a2a3
bsVolumeLabel: DB "MOS FLOPPY "
bsFileSystem: DB "FAT12 "
;******** ; Bootloader Entry Point ;**********;
loader:
cli
hlt
times 510 - ($-$$) db 0
dw 0xAA55
現在的問題是我不太明白什麼TIMES 0bh - $ +開始評估在這種情況下。 例如$ - $$ =程序的大小。 如果有人能向我解釋LODSB語法,它也會非常有趣。爲什麼在每個bpb和bs語句之後都有一個:sign?這個符號是否意味着新節的開始,就像本節目中的加載節或開始節一樣。 請詳細解釋如何評估答案。組裝中幾行的說明
謝謝。
非常感謝,但我希望更好地瞭解該聲明(本行)及其工作,如果可能的話一步一步來。請幫幫我。另外,OS名稱的最大大小是多少? – 2013-02-16 15:29:06
而一步一步我的意思是我不明白什麼0bh - $ +開始評估。 0bh - ($ - start)可能是一種方法,但$是當前代碼行的地址,並且start被聲明爲1行,因此可能導致爲1.0bh(我不知道爲什麼這個隨機十六進制是那裏) - 1 =(以十六進制B爲11 - 1)10(十進制)。但是怎麼會產生11(我可能是錯的)。這是我想知道的。謝謝。 – 2013-02-16 15:59:04
又爲什麼有11個字節?您的操作系統的名稱應該是8個字節長,對嗎? – 2013-02-16 16:15:46