You never really learn assembly language.
You can improve your skills over time by reading good books on the subject, by reading good code that others have written, and, most of all, by writing and assembling lots and lots of code yourself. But at no point will you be able to stand up and say, I know it.
You shouldn't feel bad about this. In fact, I take some encouragement from occasionally hearing that Michael Abrash, author of Zen of Assembly Language, Zen of Code Optimization, and his giant compendium Michael Abrash's Graphics Programming Black Book, has learned something new about assembly language. Michael has been writing high-performance assembly code for almost 40 years and has evolved into one of the two or three best assembly language programmers in the Western hemisphere.
If Michael is still learning, is there hope for the rest of us?
Wrong question. Silly question. If Michael is still learning, it means that all of us are students and will always be students. It means that the journey is the goal, and as long as we continue to probe and hack and fiddle and try things that we never tried before, over time we will advance the state of the art and create programs that would have made the pioneers in our field gasp in 1977.
For the point is not to conquer the subject but to live with it and grow with your knowledge of it. The journey is the goal, and with this book I've tried hard to help those people who have been frozen ...