Then one can follow up with some MS-DOS classics.
https://www.amazon.com/Peter-Nortons-Assembly-Language-Book/...
https://www.amazon.com/Advanced-S-DOS-Programming-Microsoft-...
https://www.amazon.com/Peter-Norton-Programmers-Bible-progra...
https://www.amazon.de/PC-Intern-Programming-Encyclopedia-Dev...
It goes through lessons that build up to a pretty good interactive disk editor (DSKPATCH) written entirely in x86 assembly.
Its the book that got 12 year old me out of the BASIC ghetto.
(http://www.amazon.com/Peter-Nortons-Assembly-Language-Book/d...)
Do you have any recommendations?
What I've found with most assembly language textbooks and online resources is that while the basics get covered well enough, the fundamental knowledge base is often skimmed over, as are the many assumptions and conventions that are made in how the CPU is supposed to work.
I first learned 8086 assembler from Peter Norton's book (http://www.amazon.com/Peter-Nortons-Assembly-Language-Book/d...), and more than any other resource, that taught me about how things actually work. It goes beyond just knowing the registers and the mnemonics and explains in a fantastically clear way all the implicit work that's going on behind the scenes, even in assembly code. From the stack to data segments and direct video control, I learned more about how computers work from this book than from my entire college Computer Science program. And I didn't even have an assembler to actually try any of the code at the time I read it.
I'm not sure if the book would still hold up from a practical perspective, as it does focus very much on MS-DOS-specific interrupts. So what I wonder is... is there a similar resource available today for learning what's going on behind the scenes in the modern 64-bit CPU on modern OSes?
[1] https://www.amazon.com/Peter-Nortons-Assembly-Language-Book/...