Reputation: 471
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
Now the problem is I don't quite understand what TIMES 0bh-$+start evaluates to in this case. For Example $-$$ = size of the program. Also it will be really heĺpful if someone can explain to me the LODSB Syntax. Also why is there a : sign after each of those bpb and bs statements? Doesn't the : sign mean the beginning of a new section, just as in case of loader section or start section in this program. Please explain in detail how the following evaluates to the answer.
Thanks.
Upvotes: 0
Views: 585
Reputation: 1452
Ah! "THIS LINE" just reserves space for "OEMNAME". Put the name of your OS there, if you like - padded to 11 bytes. ($$ is the same as "start" - beginning of section - 0x7C00 - in this case).
Not much "syntax" to lodsb
, it's just an instruction...
http://home.myfairpoint.net/fbkotler/nasmdocc.html#section-A.4.141
(did I confuse you using "lodbs" as an example of a typoed instruction? Sorry.)
The ":" does absolutely nothing. In the case of a label alone on a line, it informs Nasm that it is intended to be a label, and isn't a typoed instruction. Look in the Manual for "orphan_label". Nasm will (optionally - default ON) warn if there's no ":", but does the right thing anyway.
You really ought to have a nop
after jmp start
, since Nasm will emit a "short" jmp
(older versions of Nasm defaulted to a near jmp
). Since the entire purpose of "THIS LINE" is to put the remaining BPB variables in the right place, might as well do it!
Upvotes: 1