Take the 2-minute tour ×

This is a wiki question to gather useful references for learning assembly languages for various architectures.

I recently attempted to read the source code for Basic Pdp-1 Lisp from 1964, and needed to search extensively for reference materials to make even the slightest bit of sense from the code. I feel the links I've collected may prove useful to anyone attempting to read code of similar vintage, like SpaceWar!

So a good answer should comprise:

  • The name of the architecture
  • A non-trivial program in assembly language
    (This is the real focus of the question: a classic program that's worth learning assembly in order to read it.)
  • Handbooks and instruction references for understanding the program

I'll start things off with my collected references for reading Pdp-1 LISP.

share|improve this question

2 Answers 2

up vote 2 down vote accepted

x86 Assembly:

  • Here's a manual with more than 1400 pages and some exercises included, some chapters are focused on stuff like boolean algebra and system organization
  • Intel's documentation and manuals here, you shouldn't need this before a few years ;)
  • An optimization guide (quite advanced stuff)
  • Here you can find an assembler for developing win32 apps, both in console and in window. It also includes the windows SDK and a description of all win32 APIs
  • This seems to be a good GAS (GNU Assembler) manual if you're developing on linux
  • Some examples (windows)
share|improve this answer
@evilpie, good job adding info to answer, rather than adding a new answer. Keeps things tidy. I +1'd another post of yours (good on its own merits), since I can't vote you up here. –  luser droog Aug 27 '11 at 8:01

Pdp-1 LISP

Pdf of Source including explanatory article, and symbol listings: http://www.google.com/url?sa=D&q=http://www.computerhistory.org/collections/accession/102650371

An ASCII source listing: http://hack.org/mc/software/lisp.p2

A nice overview: http://en.wikipedia.org/wiki/PDP-1

Pdp-1 Handbook, including instruction set reference: http://www.bitsavers.org/pdf/dec/pdp1/F15B_PDP1_Handbook_1961.pdf

Macro asembler manual, describing how instructions are formed by arithmetic: http://www.bitsavers.org/pdf/dec/pdp1/PDP-1_Macro.pdf

Alternate presentation of instruction set illustrating composability of shift and operate instructions: http://simh.trailing-edge.com/docs/architecture18b.pdf

This last link is vital for understanding such tricks as the very first instruction:

-/Lisp interpreter 3-20-64, part 1
 000004                 4/
 000004         go,
 000004 764607          hlt+cla+cli+7-opr-opr

This could have been written with less obfuscation (but less semantic info) as:

opr 4607

Or with more semantics (and still more obfuscated) as:


But since clf == opr that would be silly.

One last crucial resource for 60s-era assembly programming is Knuth, vol. 1 (1ed or 2ed). This explains some of the more basic self-mutilations that pdp-1 code exhibits.

share|improve this answer
See this answer of mine for a description of PDP-1 self-modifying code in procedure calls. –  luser droog Apr 13 '13 at 4:10

Your Answer


