Assembly Language for the IBM PC Family - William Jones

Assembly Language for the IBM PC Family

(Autor)

Buch | Softcover
768 Seiten
2005 | 3rd edition
Scott Jones Publishing Inc., US (Verlag)
978-1-57676-058-1 (ISBN)
149,95 inkl. MwSt
  • Keine Verlagsinformationen verfügbar
  • Artikel merken
Teaches useful programming techniques. This textbook presents important but difficult concepts only after a sound grasp of the fundamentals has been attained and the more advanced concepts are actually needed. Constant and exhaustive reinforcement ensures that the readers thoroughly understand the concepts presented.
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.

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

Erscheint lt. Verlag 25.5.2005
Sprache englisch
Maße 187 x 231 mm
Gewicht 1321 g
Themenwelt Informatik Programmiersprachen / -werkzeuge Assembler
ISBN-10 1-57676-058-8 / 1576760588
ISBN-13 978-1-57676-058-1 / 9781576760581
Zustand Neuware
Haben Sie eine Frage zum Produkt?
Mehr entdecken
aus dem Bereich