Assembly Programming and Computer Architecture for Software Engineers
Assembly C++ C TeX
Switch branches/tags
Nothing to show
Clone or download
brianrhall Merge pull request #1 from codeWonderland/master
Made use of standard library consistent
Latest commit 951dada Apr 18, 2018
Permalink
Failed to load latest commit information.
Appendices macOS Oct 25, 2017
Chapter_1 macOS Oct 25, 2017
Chapter_10 comment stack cleanup Apr 17, 2018
Chapter_11 updates Feb 11, 2017
Chapter_3 macOS Oct 25, 2017
Chapter_4 macOS Oct 25, 2017
Chapter_5 macOS Oct 25, 2017
Chapter_6 cdecl MASM Oct 25, 2017
Chapter_7 macOS Oct 25, 2017
Chapter_8 Made use of standard library consistent Mar 29, 2018
Chapter_9 macOS Oct 25, 2017
FAQ NASM on macOS Feb 5, 2018
Materials typo Feb 19, 2018
content comment stack cleanup Apr 17, 2018
Book_Links.md update links Jan 6, 2018
LICENSE Initial commit Dec 9, 2016
README.md NASM on macOS Feb 5, 2018

README.md

Assembly Programming and Computer Architecture for Software Engineers (APCASE)

* Code Repository - some assembly required...git it? *

About

Cover

Welcome to the code repository for our book! APCASE is a very practical and comprehensive educational text for students, educators, and professionals seeking to learn about Assembly programming and computer architecture. But what makes our book helpful and unique?

  • 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, RISC-V, and z/Architecture.
  • 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.
Prospect Press eBook (comparison) Print Book (306 pages)
Price $44 $68
Sources Redshelf.com, Vital Source Amazon, Amazon Europe, Redshelf.com
ISBN 978-1-943153-31-2 978-1-943153-32-9

Is this book for you? Checkout the Preface, a free Chapter 3: Assembly and Syntax Fundamentals, and the free Appendices.


Chapter Roadmap

Alt


Appendices

Appendices A, B, E, and I are available for free.


Links


Citing this Book

When citing code snippets or other content from the repository or book, please cite the original source:

BibTeX:

@Book{APCASE,
author = {Hall, B. R. and Slonka, K. J.},
title = {Assembly Programming and Computer Architecture for Software Engineers},
publisher = {Prospect Press},
year = {2018},
address = {Burlington, VT},
isbn = {978-1-943153-32-9}
}

APA:

Hall, B. R. & Slonka, K. J. (2018). Assembly Programming and Computer Architecture for Software Engineers. Burlington, VT: Prospect Press.


FAQ

Book

Teaching

Programming


Errata

  • Chapter 4, p. 76, Program 4.4 - NASM: the line mov eax, array should be mov eax, [array]. Fixed in repository.
  • Chapter 5, p. 95, Code Review: JNG description should be "Jump if not greater (signed)". This is correct on p. 88.
  • Chapter 6, p. 98, 8th bullet point:
    Incorrect: "The least significant byte is stored at the start of the address (higher) and the most significant byte is stored at the end (lower)."
    Correct: "The least significant byte is stored at the start of the address (lower physcial address) and the most significant byte is stored at the end (higher physical address)."
  • Chapter 6, pp. 102-105, Figures 6.2 - 6.6: the line under Instructions in memory 0x1fa7: int $-0x80 was the disassembly visual output (and a bug) in versions of Xcode/LLVM at the time of writing the 1st Edition. The negative sign is incorrect. The bug has since been fixed and the figures will be updated in the next edition update to 0x1fa7: int $0x80.
  • Chapter 7, p. 122, CMPS (si and di registers flipped):
    Incorrect: "CMPS compares each corresponding character by performing an implicit subtraction of the character referenced by (r/e)di from the character referenced by (r/e)si..."
    Correct: "CMPS compares each corresponding character by performing an implicit subtraction of the character referenced by (r/e)si from the character referenced by (r/e)di..."
  • more errors yet to be found...

Contact

We are very happy to answer any questions or consider suggestions you might have about the text. Just email one of us!
Brian (author) or Beth (publisher)