This is an introductory book to programming and computer science using assembly language. It assumes the reader has never programmed before, and introduces the concepts of variables, functions, and flow control. The reason for using assembly language is to get the reader thinking in terms of how the computer actually works underneath. Knowing how the computer works from a “bare-metal” standpoint is often the difference between top-level programmers and programmers who can never quite master their art. The book is licensed under GNU FDL.
Great introduction to programming at a base level. Only knock is that it is older and the focus on x86 makes it a little less relevant for most machines students will be working on. Nothing that booting up a virtual environment doesn't solve though.
A really nice introduction to low level programming in assembly. Only catch seems to be the book is a little old, and most of the programs are written for 32-bit architectures, that need some refactoring to run on modern 64-bit systems.
Outdated, however, might become handy for 32-bit architecture. For those interested in learning in x86 64-bit should read Learn to Program with Assembly by the same author.
This is a great book for getting you introduced on how computers work at low-level (layout of programs, memory and virtual memory, system calls, i/o) and to help you learn the basis of assembly programming (the examples are written in GAS but it also explains Intel syntax). It is very didactic book, well-written and easy to follow. And it is free available (I downloaded from a GNU-related site). It is a pity Jonathan Barlett hasn't written more books.
One might think it is not necessary to be familiar with ASM these days, another might think this book is outdated, but looking from the C/C++ programmer point of view I would definitely recommend this book, of course, you won't become professional assembly developer, but you'll get a taste of it, this feeling, when you're in charge of pretty much everything. It also nice to see how C and C++ are actually close to the ASM, and thus hardware.