Hi,
I am working on my own OS, so I hope I can provide you with some helpful information! For writing the kernel, I use gcc running on Linux. The assembler I use is NASM, also running on Linux.
(Also, I assume your writing this for x86?)
These two sites are very valuable places for info on OS design:
http://www.osdever.net/[
^]
http://wiki.osdev.org/Main_Page[
^]
Another interesting link is this:
http://www.gnu.org/software/grub/manual/multiboot/html_node/Example-OS-code.html[
^]
The Multiboot standard is a simple way of writing a kernel, and then using a Multiboot bootloader (In my case, GRUB) to boot the kernel. A Multiboot kernel sets the CPU to 32bit and enables the A20 line (this allows access to upto a maximum of 4GB of RAM). Using a Multiboot bootloader also means you don't have to mess around writing a bootloader yourself :)
And of course: The Intel Manuals are a good place to start!