ASSEMBLY PROGRAMMING AND COMPUTER ARCHITECTURE FOR SOFTWARE ENGINEERS

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

Copyright 2018
Publication Date:
eTextbook: Expected June 15, 2017 (A pre-publication version is available now. See below.)
Paperback: April 3, 2017, available now!

Request a Review Copy

Ordering Information

eTextbook

Student Price: $44.00
ISBN: 978-1-943153-31-2
eTextbooks will be available from Redshelf.com and Vital Source.

  • A pre-publication version of the ebook is available now for $35 from Redshelf.  This version contains the complete and final content but is not yet in its final ebook format.  Click HERE to order.
Paperback

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

Campus bookstores may order from Redshelf.com (contact PO@Redshelf.com).

Available directly to students at Redshelf.com, CreateSpace.com, and Amazon Europe.

  • Redshelf.com — available now, click HERE to order.
  • CreateSpace.com — available now, click HERE to order.

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

Appendices

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