Title:
Assembly language for Intel-based computers
Author:
Irvine, Kip R., 1951-
ISBN:
9780136603900
Personal Author:
Edition:
3rd ed.
Publication Information:
Upper Saddle River, N.J. : Prentice-Hall, ©1999.
Physical Description:
xxix, 676 pages : illustrations ; 25 cm + 1 computer disc (3 1/2 in.)
General Note:
Revised edition of: Assembly language for the IBM-PC. 2nd ed. c1993.
Includes index.
Contents:
Context of Assembly Language What Is Assembly Language? Assembly Language Applications Machine Language Data Representation Binary Numbers Converting Binary to Decimal Hexadecimal Numbers Signed Numbers Character Storage Introducing Assembly Language Assembly Language Instructions A Sample Debug Program Debug Commands Hardware and Software Architecture 16-Bit Intel Processor Architecture Central Processing Unit Registers Status and Control Registers Flags Instruction Execution Cycle Intel Microprocessor Family 32-Bit Intel Processor Architecture Improved Execution Cycle 32-bit Register Set Operating System and Memory History of PC Memory Usage Memory Architecture System Startup Procedure Video Display Serial Communications Ports Read-Only Memory (ROM) Absolute Address Calculation Components of a Microcomputer Internal Components Motherboard Designs Bus Architecture Video Adapter Memory (RAM) Video RAM Secondary Storage Devices Review Questions Programming Exercises Assembly Language Fundamentals Basic Elements of Assembly Language Constants and Expressions Statements Names Sample Hello Program Assembling, Linking, and Debugging Borland Turbo Assembler (TASM) Microsoft Assembler (MASM) Data Allocation Directives Define Byte (DB) Define Word (DW) Define Doubleword (DD) Symbolic Constants Equal-Sign Directive EQU Directive TEXTEQU Directive Data Transfer Instructions MOV Instruction Operands with Displacements XCHG Instruction Arithmetic Instructions INC and DEC Instructions ADD Instruction SUB Instruction Flags Affected by ADD and SUB Basic Operand Types Register Operands Immediate Operands Direct Operands Direct -- Offset Operands Review Questions Programming Exercises Using the Assembler More About the Assembler and Linker Source Listing File Map File Assembling and Linking with MS-DOS Batch Files Memory Models Target Processor Directives Operators and Expressions Arithmetic Operators OFFSET, SEG, PTR, LABEL, and EVEN TYPE and SIZE Operators Borland TASM's ENUM Directive JMP and LOOP Instructions JMP Instruction LOOP Instruction LOOP, LOOPW, LOOPD Instructions Indirect Addressing Indirect Operands Based and Indexed Operands Base-Index Operands Base-Index with Displacement Debugging Workshop Operand Sizes and Addressing Errors More 80386 and 80486 Instructions MOVZX and MOVSX Instructions XADD Instruction Using a Link Library Selected Procedures in the Book's Link Library Displaying Random Integers Timing Events Procedures and Interrupts Stack Operations PUSH and POP Instructions Procedures PROC and ENDP Directives Sample Program: SUBS. ASM Nested Procedure Calls Near and Far Procedures Using Memory Models Procedure Parameters Passing Arguments in Registers Software Interrupts INT Instruction Redirecting Input-Output MS-DOS Function Calls Output Functions Input Functions Date/Time Functions Bios-Level Keyboard Input (INT 16H) Bios-Level Video Control (INT 10H) Displays, Modes, and Attributes Color Text Mode INT 10h Video Functions Writing Directly to Video Memory Recursion Conditional Processing Boolean and Comparison Instructions Flags Register AND Instruction OR Instruction XOR Instruction NOT Instruction NEG Instruction TEST Instruction BT, BTC, BTR, BTS Instructions BSF and BSR Instructions CMP Instruction CMPXCHG Instruction Boolean Assembler Operators Conditional Jumps Jcond Instruction Code Generation for Conditional Jumps Conditional Jump Examples SETcondition Instruction Conditional LOOPS LOOPZ and LOOPE Instructions LOOPNZ and LOOPNE Instructions High-Level Logic Structures Simple IF Statement Compound IF Statement WHILE Structure REPEAT-UNTIL Structure CASE Structure Table of Procedure Offsets Finite State Machines Integer Arithmetic Shift and Rotate Instructions SHL Instruction SHLD/SHRD Instructions SHR Instruction SAL and SAR Instructions ROL Instruction ROR Instruction RCL and RCR Instructions Sample Applications Shifting Multiple Bytes on the 8086 Fast Multiplication and Division Displaying Binary Bits Isolating a Bit String RECORD Directive Extended Addition and Substraction ADC Instruction SBB Instruction Multiplication and Division MUL Instruction IMUL Instruction DIV Instruction IDIV Instruction CBW, CWD, CDQ, and CWDE Instructions Preventing Divide Overflow Application: Direct Video Output Set_videoseg Procedure Writechar_direct Procedure Writestring_direct Procedure ASCII and Packed Decimal Arithmetic AAA Instruction AAS Instruction AAM Instruction AAD Instruction DAA, DAS Instructions Bit Manipulation Bit-Mapped Sets Prime Numbers Arithmetic with Large Numbers Direct Video Output Structures and Macros Structures Introducing Macros Macros with Parameters Defining a Macro Example: mDisplayStr Macro Example: mGotoRowCol Macro Macros That Allocate Storage LOCAL Directive Special Macro Techniques Nested Macros Macros Calling Procedures Conditional-Assembly Directives EXITM Directive Macro Operators A Simple Macro Library mWriteliteral (Write Literal) mCondCall (Conditional Call) mCompJmp (Compare and Jump) mMult16 (Memory Multiply/16) mMOVE (Memory to Memory Move) mLongLoop (Long Loop) Advanced Macros and Directives REPT Directive Linked List Example IRP Directive Extended Jump Macro Generic Shift/Rotate Macro Additional Tips Numeric Conversions and Libraries Character Translation Methods XLAT Instruction Character Filtering Character Encoding Stack Parameters Creating a Stack Frame Passing Arguments by Reference LDS/LES/LFS/LGS/LSS (Load Far Pointer) ENTER Instruction LEAVE Instruction Passing Arguments the 'C' Language Way Procedure Declarations in Borland TASM Function Procedures (TASM) Procedure Declarations in Microsoft MASM Separately Assembled Modules PUBLIC Directive Creating a MultiModule Program Creating a Link Library Binary to ASCII Conversion Writeint Procedure ASCII to Binary Conversion Readint Procedure Strings and Arrays String Storage Methods Types of Strings String Primitive Instructions MOVS (Move String Data) Need for Speed CMPS (Compare Strings) SCAS (Scan String)
Added Author: