Assembly Programming and Computer Architecture for Software Engineers

Assembly Programming and Computer Architecture for Software Engineers

Edition 2.0 | Copyright 2021 | Publication Date: December 2020

Brian R. Hall, Champlain College
Kevin J. Slonka, University of Pittsburgh Greensburg

Overview


Assembly Programming and Computer Architecture for Software Engineers uses a practical point of view to address “why” and “how” questions throughout the text. After laying the foundation of computer language and computer architecture in the first two chapters, Assembly programming is used as the mechanism for understanding computer architecture and harnessing Assembly for software development. By teaching the fundamentals of computer architecture and Assembly programming, software engineers can better understand how programs utilize hardware and are better prepared to write efficient code and debug code for a variety of systems and tasks.

In recent years, x86_64 has emerged as the dominant architecture. Edition 2.0 of this textbook has a primary focus on this 64-bit standard. The textbook covers in parallel coding in each of the three most common assemblers: GAS, MASM, and NASM.

Features


Programming on any OS Platform
Use programming examples 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. Brief introduction and code examples for other modern architectures like ARM, AVR, and RISC-V.

Wide range of code-oriented and detailed overviews
Cover function calls, floating-point operations (x87 through AVX), Inline Assembly, and system calls, all in one book.

Practical guidance and deep dives
Provide practical information with appendices that guide students in learning assembly programming while supplements for select chapters provide a deeper dive on topics as necessary. Attention, Programming, and Learning notes throughout the text also guide the reader in beneficial ways.

Promotes further exploration
Provide links to wikis, developer resources, and videos to assist in further exploration of topics.



New in Edition 2.0


x86_64 focus.

The primary programs and examples are most often x86_64, a 64-bit instruction set. Examples using x86/64 and x86 are included as secondary examples.

More GitHub programs.
Programs on GitHub include three variants for each of the three major assemblers (up to nine programs) where appropriate: x86_64, x86/64, and x86.

Compiler intrinsics. Coverage has been added.

More assignments. An extra assignment has been added to each chapter.

 

Table of Contents


Detailed Table of Contents PDF
  • 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 Sum Program Using Pass-By Reference

 

  • Chapter 7: String Instructions & Structures
  • Chapter 8: Floating-Point Operations
  • Supplement for Ch 8: Chapter 8 Programs

 

  • Chapter 9: Inline Assembly, Intrinsics, 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 Syntax Translation
  • Appendix B: Environment Setup for Assembly Programming
  • 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

About the Authors


Brian R. Hall is an Associate Professor in the Division of Information Technology & Sciences at Champlain College. He is a programmer and engineer with interdisciplinary academic interest. In addition to his teaching and technical contributions to the field, he regularly writes about computer ethics and encourages everyone to think critically about technology.

Brian R. Hall

Kevin J. Slonka is an Assistant Professor of Information Science at University of Pittsburgh Greensburg. Previously, he was the Chair of the Technology Department and Coordinator for the Computer Science & Information Technology program at Pennsylvania Highlands Community College. While there, he guided the program to earn the Academic Excellence designation for cyber security from the National Security Agency (NSA)/Department of Homeland Security (DHS). He teaches a variety of courses including programming, operating systems, and cyber security. Dr. Slonka is also the cyber security expert consultant to Precision Business Solutions.

Kevin J. Slonka

Instructor Resources


Prospect Press provides instructors with an instructor manual, lecture slides and a test bank for each title.
Some texts have additional resources including case teaching notes, tutorials, and addenda.
This content is available to instructors only and is password protected.

Resources Login

Student Resources


Code Repository, Select Appendices and More

View the text’s code repository, a chapter roadmap and Appendices A, B, E, and I (available for free), and an FAQ on GitHub.

Videos

Brian Hall’s YouTube Channel is no longer available, and the links provided in the text and slides no longer work. The authors have created a new website for the videos found here: https://lowlevelcoder.com

Previous Editions


Assembly Programming and Computer Architecture for Software Engineers

Assembly Programming and Computer Architecture for Software Engineers

Brian R. Hall, Champlain College
Kevin J. Slonka, University of Pittsburgh Greensburg

Edition 1.0
Copyright 2018
Publication date: June 15, 2017

View Previous Edition

 

Ordering Information

Student Orders

eTextbooks:
Student Price
$46.50
ISBN: 978-1-943153-76-3
Paperbacks:
Student Price
$82.25 + shipping
ISBN: 978-1-943153-82-4

Order directly from our distributors:

What's the difference between these two?

Bulk eTextbook Orders
Bookstores may order eTextbooks in bulk directly from RedShelf or VitalSource. Please contact customer support for additional information.

RedShelf: PO@RedShelf.com
VitalSource: VitalSource Bulk Order

Bulk Paperback Orders
Bookstores may order paperbacks in bulk directly from RedShelf by going to the following link. Please contact customer support for additional information.

RedShelf: RedShelf Print Orders

BNED stores
Follow your usual ordering procedures.

Frequently Asked Questions

Individual Paperback Orders
To purchase an individual book, go to the Prospect Press webpage for that book and follow the link to RedShelf or go directly to the RedShelf website using the link below, search for the title, and order there.

Bulk Paperback Orders
To purchase paperbacks in bulk contact RedShelf using the link below:
PO@Redshelf.com

If you have any particular questions about bookstore orders please contact Beth.Golub@ProspectPressVT.com.

VitalSource VS RedShelf

 
RedShelf eTextbook
VitalSource eTextbook
Online or download
Online only
Online and Download
Duration?
Permanent online access
365-day access for online, perpetual download
Returnable?
Yes, within 14 days from purchase
Yes, within 14 days from purchase
Where can I buy this online?
Go to RedShelf.com and search by author name, title, or ISBN.
Go to VitalSource.com and search by author name, title, or ISBN
Can I buy this in the campus bookstore?
Yes, at selected campus and university bookstores. Check if your bookstore sells RedShelf ebooks.
Yes, at selected campus bookstores. Check if your bookstore sells VitalSource ebooks.
For more info: