Peter Norton's Guide to the IBM PC was good, but his Assembly Language book [1] was why ASM ended up being my second language, after BASIC. Then again, that wasn't enough to know how to create working programs, at least not for a ~13 year old me. In the book, you at least learn some of it by typing in all the code for a hex editor written in pure assembly (which utilizes calls to MS-DOS system calls). It was pretty tedious, reminding me of how Mr. Miyagi teaches Daniel karate through repetition. After learning C though, I was able to write a hex editor in an afternoon, thanks to really internalizing how it should work from typing in the assembly version. I wrote that just search for and then remove the passwords in the Star Wars: TIE Fighter game. (I must not have still had the assembly one anymore. Weird.)
Oh, Norton Utilities..
Disk Editor... I am still pissed off on Symantec that they destroyed this beautifull product.
Anecdote: at the end of primary school (~16 years old or something) we had a teacher who has took time at the end of school and meticulously removed all the games that "came" to public computer in his class. It was cat and mouse game and I think he enjoyed it a lot, on our side, how to hide a game and on his, how to find it (and due to he started using Norton Commander the trick of renaming directory name to whatever±alt+255 didnt work anymore). Then the disk editor came to play, I think he wasted two days to remove directory name with real space at the end. At the end, he got a directory games on root and deep down in there directory with edited entry to point on root ;)
I too had the fortunate experience of picking up his Assembly book around the same age and it was indeed a magical experience. I got into real time computer graphics programming (the demoscene) thereafter thanks mostly to the Assembly.
I, unfortunately, didn't get the privilege of getting my hands on an assembly book. At 13, being inspired by the demoscene (I got the Unreal demo on a Simtel CD), I begged my parents to buy me Turbo Assembler. And I somehow thought that the included manual was going to be enough to get started (!). The manual had a great listing of Intel instructions, but I had no understanding of addressing modes, the stack, or what was required to make DOS system calls. Later, when I figured it out in college, I was mad because it was so simple and 13 year old me would have loved it.
Unfortunately, at that time there was no internet, and the public library only carried books on high level languages.
Argh. How I envy you.
By the way, how did you figure out graphics programming?
Nice! I tried doing a bit of demo scene stuff too (joined a group briefly) but never made anything worth releasing (the group “amour” had 4 productions but not with anything I made). I did write some fast graphics subroutines that were called from a C program. For instance, quickly put a bitmap on the screen with arbitrary x and y scaling, using fixed point numbers in assembly language. I made a scene with 3D vector balls but I had used 8 bit values for their positions so it ended up being jittery. Rewriting it was going to be too much work. Shows you the value of C where you can just change the data types and recompile. :) That book was a good foundation, and then stuff like the Michael Abrash black book later on for graphics.
I went through that book at around the same age and loved the format - seeing the hex editor “come to life” helped me internalize that complex programs can be built incrementally. It also helped me sail through my assembly language class years later when I was in college.
[1] https://www.amazon.com/Peter-Nortons-Assembly-Language-Book/...