Assembly Language for the IBM PC Family / Edition 3

Assembly Language for the IBM PC Family / Edition 3

by William Jones
Pub. Date:
Select a Purchase Option (New Edition)
  • purchase options

    Temporarily Out of Stock Online

    Note: Access code and/or supplemental material are not guaranteed to be included with textbook rental or used textbook.


Assembly Language for the IBM PC Family / Edition 3

This textbook teaches useful programming techniques. It was developed so that the order and presentation of material is determined by pedagogical necessity. Important but difficult concepts are delayed until the reader has a sound grasp of the fundamentals and these more advanced concepts are actually needed. Constant and exhaustive reinforcement ensures that readers thoroughly understand the concepts presented. The author's extensive set of exercises, with answers, tests the student's grasp of what is happening in the machine on a nuts and bolts level.

Product Details

ISBN-13: 2901576760580
Publisher: Pearson
Publication date: 10/16/2000
Edition description: New Edition
Pages: 768
Product dimensions: 6.00(w) x 1.25(h) x 9.00(d)

Table of Contents

Chapter 1: Preliminaries
1.1 Hardware Overview
1.1.1 Level I: General Properties of Personal Computers
1.1.2 Level II: IBM PC Hardware
1.1.3 More on Memory (Optional)
1.2 The Decimal, Binary, and Hexadecimal Numbering Systems
1.2.1 The Binary Number System
1.2.2 Conversions between Binary and Decimal
1.2.3 The Hexadecimal Number System
1.2.4 Conversions Involving Hexadecimal
1.2.5 Addition in Binary and Hex
1.3 Negative Numbers; 2's Complement Arithmetic
1.3.1 Sign-Magnitude Representation
1.3.2 1's Complement Representation
1.3.3 2's Complement Representation
1.4 The ASCII Character Set
1.5 Pseudo-Code

Chapter 2: Assembler Overview
2.1 Creating an Assembly Language Program
2.2 Structure of an IBM PC Assembly Language Program
2.2.1 Global Program Structure
2.2.2 The .STACK Segment
2.2.3 The .DATA Segment
2.2.4 The .CODE Segment

Chapter 3: More on I/O
3.1 Macros for I/O
3.2 The DOS Display Character Call
3.3 Magic Numbers
3.4 Numeric I/O

Chapter 4: Arithmetic
4.1 Addition and Subtraction
4.2 Multiplication and Division
4.3 Comments on Comments
4.4 A Little Something Extra: Timing of Instructions (completely new)
4.5 Internal Format of Instructions (Optional)

Debug Workshop I: Introduction to Debuggers

Chapter 5: Comparing and Branching
5.1 Decision-making in Assembly Language
5.2 Unsigned Conditional Jumps
5.3 Arithmetic and the Flags
5.4 Counting Loops (important revision)
5.5 Reading Single Characters
5.6 Loop Case Studies
5.7 Some Technical Details on Compares and Jumps
5.8 Timing of Instructions, Continued.

Debug Workshop II: Debugging with Breakpoints

Chapter 6: Subprograms
6.1 Writing Subprograms
6.2 The Stack
6.3 The Stack, call, and ret
6.4 Separately Translated Subprograms
6.5 Creating Program Libraries (Optional)
6.6 How the Linker Works (Optional)

Debug Workshop III: Procedures

Chapter 7: Applying Assembly I: Numeric I/O
7.1 PutDec I: Displaying Unsigned Numbers
7.2 PutDec II: Turning PutUDec into PutDec
7.3 GetDec I: Reading a Number from the Keyboard

Chapter 8: Writing Macros and Program Testing
8.1 Writing Simple Macros
8.1.1 Macro Declarations
8.1.2 Macro Expansion
8.1.3 Parameter Parentheses
8.1.4 Local Symbols
8.1.5 Parameter Separator (&)
8.1.6 Assembly Listings
8.2 An Extended Example: Programming Testing
8.3 Pseudo-Macros for Repetition

Chapter 9: Bit Operations
9.1 Boolean Operations
9.2 Shift Operations (substantial revision)
9.3 An Application-Code to Implement PutHex
9.4 A Little Something Extra: Bit Instructions in High Level Languages
9.5 Assembler RECORD Structures (Optional)

Chapter 10 Arrays
10.1 Addressing
10.1.1 Memory Address versus Memory Contents
10.1.2 Address Arithmetic
10.1.3 Types of Address Expressions
10.1.4 Rules for Address Expressions
10.1.5 Byte Swapping
10.1.6 Byte Swapping and Address Arithmetic (Optional)
10.2 Arrays
10.2.1 Arrays in General
10.2.2 Using Arrays
10.3 Reading a Whole Line from the Keyboard
10.4 A Little Something Extra: Indexing with Extended Registers (new in this position)
10.5 Arrays in High-Level Languages (Optional)

Debug Workshop IV: Arrays and Byte Swapping

Chapter 11: Applying Assembly II: Array Applications
11.1 Conversion Tables
11.2 Sets (Substantially rewritten)
11.2.1 Representing Sets as Arrays
11.2.2 Searching Sets
11.2.3 An Application: The Sieve of Eratosthenes
11.3 PutDec III: Bin2Dec
11.4 C/C++/Java Variable Length Character Strings (completely new)
11.5 C/C++ switch and Pascal case Statements

Chapter 12: Segments
12.1 Segments and Offsets
12.2 Segment Registers
12.3 Defining Segments (important new material)
12.4 The ASSUME Statement
12.5 The Program Segment Prefix (PSP)
12.6 A Little Something Extra: The Real Time Clock and Program Timing (mostly new)
12.7 A Little Something Extra: Pointers
12.8 A Little Something Extra: Memory Models (new material)

Debug Workshop V: Segments

Chapter 13: Procedures and High Level Languages
13.1 Procedures and the Stack (includes new material)
13.2 A Little Something Extra: Assembler Help with Procedures (includes new material)
13.3 A Little Something Extra: CPU Assistance with Procedures
13.4 A Little Something Extra: Reference Parameters (includes new material)
13.5 A Little Something Extra: Other C++ Features (all new)
13.5.1 Default Parameter values
13.5.2 Overloaded Functions
13.5.3 Polymorphic Calling of Virtual Functions
13.6 A Little Something Extra: Embedding Assembly in a High Level Language

Chapter 14: Applying Assembly III: Multiple Precision and Decimal Arithmetic
14.1 Operations for Multiple Precision
14.2 Working with Multiple Precision Numbers
14.3 Random Numbers (substantially revised)
14.4 Decimal Arithmetic

Chapter 15: Interrupts
15.1 Generalities about Interrupts
15.2 Interrupt Processing on the 80X86
15.3 Applications: Timing Operations and Debuggers
15.3.1 The Real Time Clock
15.3.2 Interrupts and Debuggers
15.4 Interrupt Handlers
15.5 A Little Something Extra: A TSR Program
15.6 A Little Something Extra: Simultaneously Executing Programs
15.6.1 Race Conditions
15.6.2 Semaphores: an Abstract Method of Synchronization
15.6.3 Using Semaphores to Solve Race Conditions
15.6.4 Implementing Semaphores to Solve Race Conditions
15.7 A Short History of Interrupts

Chapter 16: Conditional Assembly and More on Macros
16.1 Generally Applicable IFs
16.2 IFs Usable Only in Macros (includes new material)

Chapter 17: String Processing Instructions
17.1 The String Operations (includes new material)
17.2 The REP Instruction Prefix

Chapter 18: File Processing
18.1 Handles and Opening, Creating, and Closing Files
18.2 Basic File Operations
18.3 Random File Accessing
18.3.1 The _LSeek Macro
18.3.2 Applications of _LSeek I: LOG, a Message Logger
18.3.3 Applications of _LSeek II: Tail, and End of File Displayer (revised)
18.3.4 Writing the _LSeek Macro
18.4 A Little Something Extra: Redirecting stderr (includes new material)
18.5 The Utility Routines ParseCmd, CCheck, and WCheck (revised)

Chapter 19: Floating Point
19.1 FPU Data
19.1.1 Floating Point Numbers
19.1.2 Integers
19.1.3 BCD Numbers
19.2 Form of Floating Point Instructions
19.3 The FPU Stack
19.4 Floating Point Arithmetic
19.5 Floating Point I/O
19.6 FPU Comparing and Branching
19.7 Transcendental Functions and the FPU
19.8 The FPU and the Debugger

Chapter 20: Applying Assembly IV: Windows 32 Bit Programming (entirely new)
(Actual chapter contents may vary)
20.1 32 Bit Console Applications
20.2 Simple Windows Programs in Assembly
20.3 Graphics Programming

Answers to Selected Exercises
Appendix A: The IBM Extended Character Set
Appendix B: 80X86 Instructions
Appendix C: DOS in Windows (entirely new)
Appendix D: Selected DOS and BIOS Functions, Formats, and Memory Locations
Appendix E: Debugger Summary
Appendix F: How Assemblers Work

Customer Reviews

Most Helpful Customer Reviews

See All Customer Reviews