Brian R. Hall, Champlain College
Kevin J. Slonka, Pennsylvania Highlands Community College

Copyright 2018
Publication Date:
eTextbook: June 15, 2017, Available now!
Paperback: April 3, 2017, Available now!

Request a Review Copy

Ordering Information


Student Price: $44.00
ISBN: 978-1-943153-31-2

Campus bookstores may order from (contact [email protected]) and Vital Source.

Available directly to students at these online retailers:

  • — Click HERE to order.
  • — Click HERE to order.

Student Price: $68.00
ISBN: 978-1-943153-32-9
306 pages

Campus bookstores may order from (contact [email protected]) or CreateSpace.

Available directly to students at these online retailers:

  • — Click HERE to order.
  • — Click HERE to order.
  • Amazon Europe

Description & Features

This book is an educational examination of Assembly programming and computer architecture that approaches the topics from a practical point of view. The authors readily address “why” and “how” questions throughout the text. The first two chapters lay the foundation of computer language and computer architecture. Then, subsequent chapters use Assembly programming as the mechanism for gaining a better understanding of computer architecture and how Assembly can be harnessed in terms of software development. Software engineers who understand the fundamentals of computer architecture and Assembly programming better understand how programs utilize hardware and are better prepared to efficiently write and debug code for a variety of systems and tasks. What makes this book unique is our multi-faceted approach.

  • Based on x86 and x86_64 architecture.
  • All programming examples are provided for three common assemblers: GAS (Clang/LLVM), MASM, and NASM, which ensures both AT&T and Intel syntax. This allows for learning on any OS platform: Mac, Windows, and Linux.
  • Context and examples provided in both 32-bit and 64-bit, both of which are useful for a programmer.
  • Code-oriented and detailed overviews of function calls, floating-point operations (x87 through AVX), Inline Assembly, and system calls, all in one book.
  • Brief introduction and code examples for other modern architectures like ARM, AVR, and RISC-V.
  • The Appendices provide practical information and guide students in learning Assembly programming.
  • Chapter Supplements provide a deeper dive on topics as necessary.
  • Links to wikis, developer resources, and videos are provided to assist in further exploration of topics.
  • Attention, Programming, and Learning notes are placed throughout the text to guide the reader in beneficial ways.

Table of Contents

Chapter 1: Language and Data Fundamentals

Chapter 2: Processor and System Architecture
Supplement for Ch 1 & 2, More Architecture Details

Chapter 3: Assembly and Syntax Fundamentals

Chapter 4: Basic Instructions

Chapter 5: Intermediate Instructions

Chapter 6: Functions
Supplement for Ch 6: Program 6.3 x86_64 Implementation

Chapter 7: String Instructions & Structures

Chapter 8: Floating-Point Operations
Supplement for Ch 8: Chapter 8 Programs

Chapter 9: Inline Assembly and Macros

Chapter 10: Advanced Processor and System Architecture
Supplement for Ch 10: Chapter 10 Programs and Resources

Chapter 11: Other Architectures

Chapter 12: Hardware and Electrical Components


Introduction to the Appendices

Appendix A: Assembly Translation

Appendix B: Environment Setup

Appendix C: Disassembly

Appendix D: Command-Line Debugging Assembly with GDB

Appendix E: Linking Assembly and C++

Appendix F: Functions and Stack

Appendix G: Using CPUID

Appendix H: ASCII and Decimal Arithmetic

Appendix I: Intrinsics