8th edition. — Prentice-Hall, 2019. — 1998 p. — ISBN: 978-0-13-538165-6, 0-13-538165-7.
Assembly Language for x86 Processors, Eighth Edition, teaches assembly language programming and architecture for x86 and Intel64 processors. It is an appropriate text for the following types of college courses:
Assembly Language Programming.
Fundamentals of Computer Systems.
Fundamentals of Computer Architecture.
Written specifically for the Intel/Windows/DOS platform, this complete and fully updated study of assembly language teaches students to write and debug programs at the machine level. Based on the Intel processor family, the text simplifies and demystifies concepts that students need to grasp before they can go on to more advanced computer architecture and operating systems courses. Students put theory into practice through writing software at the machine level, creating a memorable experience that gives them the confidence to work in any OS/machine-oriented environment. Proficiency in one other programming language, preferably Java, C, or C++, is recommended.
Basic Concepts.
Introduction: Basic Concepts.
Welcome To Assembly Language.
Virtual Machine Concept.
Data Representation.
Boolean Expressions.
Key Terms.
Review Questions and Exercises.
x86 Processor Architecture.
Introduction: x86 Processor Architecture.
General Concepts.
32-Bit x86 Processors.
64-Bit x86-64 Processors.
Components of a Typical x86 Computer.
Input-Output System.
Key Terms.
Review Questions.
Assembly Language Fundamentals.
Introduction: Assembly Language Fundamentals.
Basic Language Elements.
Example: Adding and Subtracting Integers.
Assembling, Linking, and Running Programs.
Defining Data.
Symbolic Constants.
Introducing 64-Bit Programming.
Key Terms.
Review Questions and Exercises.
Programming Exercises.
Data Transfers, Addressing, and Arithmetic.
Introduction: Data Transfers, Addressing, and Arithmetic.
Data Transfer Instructions.
Addition and Subtraction.
Data-Related Operators and Directives.
Indirect Addressing.
JMP and LOOP Instructions.
64-Bit Programming.
Key Terms.
Review Questions and Exercises.
Programming Exercises.
Procedures.
Introduction: Procedures.
Stack Operations.
Defining and Using Procedures.
Linking to an External Library.
The Irvine32 Library.
64-Bit Assembly Programming.
Key Terms.
Review Questions and Exercises.
Programming Exercises.
Conditional Processing.
Introduction: Conditional Processing.
Boolean and Comparison Instructions.
Conditional Jumps.
Conditional Loop Instructions.
Conditional Structures.
Application: Finite-State Machines.
Conditional Control Flow Directives (Optional topic).
Key Terms.
Review Questions and Exercises.
Programming Exercises.
Integer Arithmetic.
Introduction: Integer Arithmetic.
Shift and Rotate Instructions.
Shift and Rotate Applications.
Multiplication and Division Instructions.
Extended Addition and Subtraction.
ASCII and Unpacked Decimal Arithmetic.
Packed Decimal Arithmetic.
Key Terms.
Review Questions and Exercises.
Programming Exercises.
Advanced Procedures.
Introduction: Advanced Procedures.
Stack Frames.
Recursion.
INVOKE, ADDR, PROC, and PROTO.
Creating Multimodule Programs.
Advanced Use of Parameters (Optional Topic).
Java Bytecodes (Optional Topic).
Key Terms.
Review Questions and Exercises.
Programming Exercises.
Strings and Arrays.
Introduction: Strings and Arrays.
String Primitive Instructions.
Selected String Procedures.
Two-Dimensional Arrays.
Searching and Sorting Integer Arrays.
Java Bytecodes: String Processing (Optional Topic).
Key Terms and Instructions.
Review Questions and Exercises.
Programming Exercises.
Structures and Macros.
Introduction: Structures and Macros.
Structures.
Macros.
Conditional-Assembly Directives.
Defining Repeat Blocks.
Key Terms.
Review Questions and Exercises.
Programming Exercises.
MS-Windows Programming.
Introduction: MS-Windows Programming.
Win32 Console Programming.
Writing a Graphical Windows Application.
Dynamic Memory Allocation.
32-Bit x86 Memory Management.
Key Terms.
Review Questions and Exercises.
Programming Exercises.
Floating-Point Processing and Instruction Encoding.
Introduction: Floating-Point Processing and Instruction Encoding.
Floating-Point Binary Representation.
Floating-Point Unit.
x86 Instruction Encoding.
Key Terms.
Review Questions and Exercises.
Programming Exercises.
High-Level Language Interface.
Introduction: High-Level Language Interface.
Inline Assembly Code.
Linking 32-Bit Assembly Language Code to C/C++.
Key Terms.
Review Questions.
Programming Exercises.
16-Bit MS-DOS Programming.
Introduction: 16-Bit MS-DOS Programming.
MS-DOS and the IBM PC.
MS-DOS Function Calls (INT 21h).
Standard MS-DOS File I/O Services.
Programming Exercises.
Disk Fundamentals.
Introduction: Disk Fundamentals.
Disk Storage Systems.
File Systems.
Disk Directory.
Reading and Writing Disk Sectors.
System-Level File Functions.
Programming Exercises.
Key Terms.
Chapter 15 End Note.
BIOS-Level Programming.
Introduction: BIOS-Level Programming.
Keyboard Input with INT 16h.
Video Programming with INT 10h.
Drawing Graphics Using INT 10h.
Memory-Mapped Graphics.
Mouse Programming.
Programming Exercises.
Backmatter.
MASM Reference.
MASM Reserved Words.
Register Names.
Microsoft Assembler (ML).
Microsoft Assembler Directives.
Symbols.
Operators.
Runtime Operators.
The x86 Instruction Set.
Instruction Set Details (Non Floating-Point).
Floating-Point Instructions.
BIOS and MS-DOS Interrupts.
PC Interrupts.
Interrupt 21H Functions (MS-DOS Services).
Interrupt 10H Functions (Video BIOS).
Keyboard BIOS INT 16h Functions.
Mouse Functions (INT 33h).
Answers to Review Questions (Chapters 14 – 16).
ASCII Character Reference Charts.
Supplemental Materials.