nasm32 - good point; however, I'm curious to know what parts of ASM did you focus on for so long?
Some martiall artist said, "I don't fear the man who knows ten thousand kicks, I fear the man who has practiced one kick ten thousand times."
My approach to learning ASM was to get my hands on all the 32-bit assembly on Linux books I could find. BTW - there aren't that many. I reviewed all the basics and that was good.
However, I started doing number crunching, number theory, Project Euler type stuff; which exhausted what I learned from the books and caused me to dig futher into the Intel & AMD manuals. This also led to learning SIMD and working w/ the xmm regs; which I now use almost once a week. I also speed up my learning of Awk & Python3 the same way.
So my advice is to spend some time solving math & word puzzles as a way to augement your learning of any programming language. Solving puzzles will force you to be creative; especially in assembly where you have to create your own functions/macros; e.g., DigitSum(), isPrime(), isPalindrome(), gdc(), isSquare(), nthRoot()...
David a/k/a @InfinitelyManic