HN Books @HNBooksMonth

The best books of Hacker News.

Hacker News Comments on
Peter Norton's Assembly Language Book for the IBM PC

Peter Norton · 5 HN comments
HN Books has aggregated all Hacker News stories and comments that mention "Peter Norton's Assembly Language Book for the IBM PC" by Peter Norton.
View on Amazon [↗]
HN Books may receive an affiliate commission when you make purchases on sites after clicking through links on this page.
Amazon Summary
Programmers wanting to develop full-fledged programs in assembly language need this book. The more than 100,000 programmers who made the first edition an instant classic know: Norton and Socha team up to produce a primer for serious users.
HN Books Rankings

Hacker News Stories and Comments

All the comments and stories posted to Hacker News that reference this book.
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.)

[1] https://www.amazon.com/Peter-Nortons-Assembly-Language-Book/...

ohadpr
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.
drivers99
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.
copperx
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?

dugmartin
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.
stiray
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 ;)

Loved the article.

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...

rzzzt
One more from Mr. Norton: https://www.amazon.com/Peter-Norton-Programmers-Guide-IBM/dp...

It covers a wide range of interrupt routines, both DOS and the BIOS ones. Also, some PCJr sound chip programming got snuck in.

voltagex_
Peter Norton's Assembly Language book is also online: https://openlibrary.org/works/OL65474W/Assembly_language_boo... but crazily, there's a waitlist to "check out" the eBook.

Sigh.

I did once contact the current copyright owners (DK or Penguin, I think) to see if it could be re-released or released for free, but the paperwork scared me off. Hopefully someone has more luck one day.

zerr
Obligatory mention: John Socha is the author of Peter Norton books as well as Norton Commander.
mhd
I see your Norton and raise you an Abrash:

https://www.amazon.com/Zen-Assembly-Language-Knowledge-Progr...

https://www.amazon.com/Zen-Graphics-Programming-2nd-Applicat...

https://www.amazon.com/Zen-Code-Optimization-Ultimate-Softwa...

Zen of Asm is also online, I think a few of the other works, too.

http://www.jagregory.com/abrash-zen-of-asm/

ghaff
I'm sure I still have my paper copy someplace. I still remember that you did things differently on an 8086 than an 8088 for example because of the difference in the width of the external data bus. Cycle counting. I'm not sure I learned much that was practical from it but it was the ultimate in optimizing x86 assembler code.

As I recall, he was going to write a sequel but, by then, it would have been fairly pointless.

pjmlp
That is unfair. :)
disqard
Ahhh, Zen of Graphic Programming was my one of first graphics books, which led straight to Foley, vanDam, et. al., and I was hooked :)

It's safe to say Abrash's book had a big impact on me.

Norton's books also make me nostalgic, so thank you for that, GP.

If you are interested in assembly language concepts and don't mind something slightly archaic, I thoroughly enjoyed this book: https://www.amazon.com/Peter-Nortons-Assembly-Language-Book/...

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.

wittedhaddock
What are you working on today? Are you still using assembly?
flanbiscuit
Personally I'm interested in Assembly because I want to build NES and Atari games. I think there are some C libraries people have created recently to help with that but those systems were pure 6502 Assembly and I definitely want to learn that.
zimbu668
I came here to recommend Assembly Language for the PC(https://www.amazon.com/Assembly-Language-Brady-programming-l...) which I believe is actually the same book, possibly with some updates. I was probably 14 years old and bought a boxed copy of Borland Turbo Assembler for $100 at the software store at the mall. Totally worth it.

I've never actually written assembly professionally, but the understanding of what's going on at the CPU level has been invaluable. You could probably run FreeDOS(http://www.freedos.org/) in a VM, looks like it comes with a couple different assemblers.

Agreed, but I like the simplicity when starting out since there's just so much. I'm reading Peter Norton's Assembly programming book from '87 to keep things super simple.

(http://www.amazon.com/Peter-Nortons-Assembly-Language-Book/d...)

Do you have any recommendations?

This is a great resource, and the following is not a criticism, but an observation.

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?

drivers99
That book was great. I made the mistake (perhaps) of using it to try to learn assembly language right after learning BASIC (Advanced BASIC that comes with MS-DOS/PC-DOS) and before learning Pascal or C. It had a program you were supposed to type in (a hex editor), and I was able to get it to work, but I was not able to get programs of my own design to work except very tiny programs or to modify existing executables using DEBUG. (Then again, shortly after, I could not get C programs of my own design to work very often either. I forget how hard C is to a beginner sometimes.) Then again, eventually I was able to throw together a decent hex editor, in C this time, in an afternoon, and I am certain it was from internalizing what I had learned from that assembly book, and when I started including assembly language graphics routines in my C programs, I'm sure that helped as well. When everything moved to 32-bit protected-mode code I was kind of lost again though. That book is 16-bit real mode.
voltagex_
Looks like the book is freely available - https://openlibrary.org/books/OL2197699M/Peter_Norton%27s_as...
voltagex_
Just a warning: the file I linked to is "broken" on account of needing Adobe Digital Editions and only one person (in the world?) can read it at a time.
socillion
I recommend Computer Systems: A Programmer's Perspective. It sounds like what you're looking for, although it uses a mix of C and IA32.
thinkpad20
I came in here to say just this! A fantastic book in so many ways. I read a lot of it on my own and learned more than in many of my classes on similar subjects. It taught me a huge amount about C, systems, architecture, memory and more. Very cool stuff. It starts with x86 but goes over at least the basic differences between it and x64.
shuffle2
http://www.agner.org/optimize/#manuals

http://ref.x86asm.net/

http://www.sandpile.org/

https://web.archive.org/web/20110713081927/http://siyobik.in... (anyone know of a mirror? this was nice)

acc01
> anyone know of a mirror?

http://siyobik.info.gf/main/reference/

HN Books is an independent project and is not operated by Y Combinator or Amazon.com.
~ yaj@
;laksdfhjdhksalkfj more things
yahnd.com ~ Privacy Policy ~
Lorem ipsum dolor sit amet, consectetur adipisicing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Ut enim ad minim veniam, quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo consequat. Duis aute irure dolor in reprehenderit in voluptate velit esse cillum dolore eu fugiat nulla pariatur. Excepteur sint occaecat cupidatat non proident, sunt in culpa qui officia deserunt mollit anim id est laborum.