I was reading a page from
which says a bit into the tutorial,
'When a boot disk is booted, the boot sector (1,0,0) is loaded at 0:7C00h'.
What is that?

Who is Participating?
I wear a lot of hats...

"The solutions and answers provided on Experts Exchange have been extremely helpful to me over the last few years. I wear a lot of hats - Developer, Database Administrator, Help Desk, etc., so I know a lot of things but not a lot about one thing. Experts Exchange gives me answers from people who do know a lot about one thing, in a easy to use platform." -Todd S.

I presume the question is about the 0:7c00h - that's the address that the BIOS loads the boot sector into then transfers control to.

When the processor comes alive, it's in an addressing mode that only sees the first meg of RAM.  In that mode, addresses are defined in two parts - a segment (also called paragraph) address and an offset.

The segment address specifies a particular 16 byte clump of RAM and the offset specifies how many bytes past the beginning of that 16 byte clump to go.

The standard way of presenting such addresses is <Segment>:<Offset>.  In the case above, 0:7c00 specifies 31,744 bytes past the beginning of the first segment.  An alternate way of specifying that address would be 07c0:0000.

An interesting question would be "Why that particular address?"  Now, I don't know the history of the matter, but I would suspect that somebody had a sense of humor - 07c0:000 in decimal is the segment 1984.

bod_1Author Commented:
It would copy the boot sector into that address, set CS:IP=0000:7c00 and begin execution?

In effect.  The exact mechanism for transferring control may vary from BIOS to BIOS.  For example, one just might push the address to the stack then do a retf.
The Ultimate Tool Kit for Technolgy Solution Provi

Broken down into practical pointers and step-by-step instructions, the IT Service Excellence Tool Kit delivers expert advice for technology solution providers. Get your free copy for valuable how-to assets including sample agreements, checklists, flowcharts, and more!

bod_1Author Commented:
Adjusted points to 300
bod_1Author Commented:
Yup, I'd assume that the offset used for the IPL is some sort of egg.  Maybe so the programmer could remember what year it was? :)
Well, you've answered my question but I'm still a bit foggy about the procedure.  If I raise another hundred points could you walk me through a bit more?

IP now addresses the beginning of the master boot record (now in RAM).
It sounds from the tutorial, that the first 3 bytes of the MBR (00, 01, 02) can be used to address your bootstrap code and jump execution there.  I suppose that the jmp instruction (1 byte) with a 2 byte address should make up these first 3 bytes?
Once the code is loaded and jumped to, it's all up to the code - there is no requirement that offset 0 have a jump.

That said, in the DOS world, there is, indeed, a short jump around the DOS ID string and a table describing the disk.  If you look at a DOS MBR you'll see an EB as the first byte - that's the short jump around the table.

In general though, what happens now is entirely up to the OS writter.

Experts Exchange Solution brought to you by

Your issues matter to us.

Facing a tech roadblock? Get the help and guidance you need from experienced professionals who care. Ask your question anytime, anywhere, with no hassle.

Start your 7-day free trial
bod_1Author Commented:
cool.  Thanks for your help cookre.
I understand up to that part now and can continue reading.
It's more than this solution.Get answers and train to solve all your tech problems - anytime, anywhere.Try it for free Edge Out The Competitionfor your dream job with proven skills and certifications.Get started today Stand Outas the employee with proven skills.Start learning today for free Move Your Career Forwardwith certification training in the latest technologies.Start your trial today

From novice to tech pro — start learning today.