I have been programming for a few years now and I have decided that I would like to begin working on my own computer operating system. Yes, that means bootloader and kernel from scratch, none of that building on Linux business. I am talking EVERYTHING from scratch. Now, I have obviously looked around on Google, and have found out that I may need to learn Assembly (x86 or x64 asm, depending on wether 64-bit or 32-bit are desired) but some people say that you do not need to and you need to learn to directly communicate with the hardware (the Kernel???) and now I have become very confused. What do I need to know, and how do I do it? I have had quite a difficult time finding a good tutorial on Assembly on Google, so any links to tutorials would be very nice. Thank you very much guys.