Skip to main content Skip to main navigation

Assembly Language for the IBM PC Family, 3rd edition

  • William Jones

Published by Pearson (October 2nd 2000) - Copyright © 2001

3rd edition

Assembly Language for the IBM PC Family

ISBN-13: 9781576760581

Includes: Paperback
Free delivery
$133.32 $166.65

What's included

  • Paperback

    You'll get a bound printed text.

Overview

Jones is characterized by introduction of topics motivated by pedagogy and student need rather than the simple desire to list everything related together.
  1. For example: Arrays
    Arrays are delayed as long as reasonably possible. Then they are treated extremely carefully and completely with many examples. Jones also treats the difference between 'subscript' and 'pointer' processing of arrays which is essential to understanding array processing in C/C++. Competitors tend to introduce it early and give it minor coverage allowing students to sink or swim on their own).
  2. For example: Segments
    As in arrays, Jones delays as long as reasonably possible. (You don't really start needing to talk about segments until you must , in order to get command line input.) Competitors: Most mention segment registers in Chaper 1, long before the student has the background to understand them.
  3. For example: Programming Problems
    Problems in Jones are realistic, completely specified, TESTED programming problems.
Competitors often have no programming problems at all. When they do they, are often incompletely specified and it is difficult to separate the easy ones from the difficult ones.

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
Bibliography
Index

For teachers

All the material you need to teach your courses.

Discover teaching material