log on to source forge and download the linux/freeBSD/netBSD source tree.
see if you can egt your head around it. I think the issue will be that there is no correct way to code an OS. linux, solaris, BSD and windows all take very different approaches.
Which assember are you after, 8086 assembly is a nightmare but 68000 is OK imho there are plenty of books around on assembler but most of an OS is written in C / C++ in my experience.
wrt Boot loaders try searching a major web based bookseller for 'bootloader design' there are lots out there. anything from the O'Reily range is a good bet.
The best way to learn how an OS (linux usually) is built is to read the code.
HT