You question is pretty broad in scope as which platform are we talking about. The best way to learn at this level is to delve into the processor. Another assumption is you're going to using Intel, so a really good knowledge of the instruction set is mandatory. Then the next is using your assembler of choice, which I assume again to be NASM as you've come to this site. http://www.intel.com/content/www/us/en/processors/architectures-software-developer-manuals.html has two selection at the very beginning, which I find to be very good.Then the best tutorials are those you dream up yourself. I've have posted and will continue to post in the code section of this forum and so if your doing console work in Linux, it may be of some benefit to you.