Fuller: Information Systems Project management

Assembly Programming and Computer Architecture for Software Engineers

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

Edition 1.0

Copyright 2018
Publication Date: June 15, 2017

For Instructors

Order A Review Copy
Instructor Resources

Ordering Information for Students

Student Price: $44.00
ISBN: 978-1-943153-31-2
eTextbooks are available directly to students from either of two distributors.

RedShelfVitalSourceOrdering Options

Student Price: $68.00
ISBN: 978-1-943153-32-9
Paperbacks are available directly to students from Redshelf. Click below to order.


Description of ordering options


The paperbacks from each of these distributors are comparable.

Resources for Students

Student Resources

Ordering Information for Bookstores and Libraries



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