Dr. S. R. Lasker Library Online Catalogue

Home      Library Home      Institutional Repository      E-Resources      MyAthens      EWU Home

Amazon cover image
Image from Amazon.com

Assembly language for Intel-based computers / Kip R. Irvine.

By: Irvine, Kip R, 1951-Contributor(s): Irvine, Kip R, 1951-. Assembly language for the IBM-PCMaterial type: TextTextLanguage: English Publication details: Upper Saddle River, N.J. : Prentice-Hall, c1999. Edition: 3rd edDescription: xxix, 676 p. : ill. ; 25 cm. +ISBN: 0136603904 (hardcover); 0130824518 (paper back); 9780136603900Subject(s): IBM Personal Computer -- Programming | Assembly languages (Electronic computers)DDC classification: 005.265 LOC classification: QA76.8.I2594 | I77 1999Online resources: WorldCat details
Contents:
TOC 1.1 Context of Assembly Language 1 -- 1.1.1 What Is Assembly Language? 2 -- 1.1.2 Assembly Language Applications 4 -- 1.1.3 Machine Language 6 -- 1.2 Data Representation 7 -- 1.2.1 Binary Numbers 7 -- 1.2.2 Converting Binary to Decimal 9 -- 1.2.3 Hexadecimal Numbers 9 -- 1.2.4 Signed Numbers 12 -- 1.2.5 Character Storage 13 -- 1.3 Introducing Assembly Language 15 -- 1.3.1 Assembly Language Instructions 15 -- 1.3.2 A Sample Debug Program 16 -- 1.3.3 Debug Commands 18 -- 2 Hardware and Software Architecture 23 -- 2.1 16-Bit Intel Processor Architecture 24 -- 2.1.1 Central Processing Unit 24 -- 2.1.2 Registers 25 -- 2.1.3 Status and Control Registers 27 -- 2.1.4 Flags 28 -- 2.1.5 Instruction Execution Cycle 29 -- 2.1.6 Intel Microprocessor Family 29 -- 2.2 32-Bit Intel Processor Architecture 31 -- 2.2.1 Improved Execution Cycle 31 -- 2.2.2 32-bit Register Set 32 -- 2.3 Operating System and Memory 32 -- 2.3.1 History of PC Memory Usage 32 -- 2.3.2 Memory Architecture 33 -- 2.3.3 System Startup Procedure 34 -- 2.3.4 Video Display 36 -- 2.3.5 Serial Communications Ports 37 -- 2.3.6 Read-Only Memory (ROM) 37 -- 2.3.7 Absolute Address Calculation 37 -- 2.4 Components of a Microcomputer 38 -- 2.4.1 Internal Components 39 -- 2.4.2 Motherboard Designs 39 -- 2.4.3 Bus Architecture 40 -- 2.4.4 Video Adapter 41 -- 2.4.5 Memory (RAM) 42 -- 2.4.6 Video RAM 43 -- 2.4.7 Secondary Storage Devices 44 -- 2.5 Review Questions 46 -- 2.6 Programming Exercises 48 -- 3 Assembly Language Fundamentals 53 -- 3.1 Basic Elements of Assembly Language 54 -- 3.1.1 Constants and Expressions 54 -- 3.1.2 Statements 55 -- 3.1.3 Names 56 -- 3.2 Sample Hello Program 57 -- 3.3 Assembling, Linking, and Debugging 60 -- 3.3.1 Borland Turbo Assembler (TASM) 61 -- 3.3.2 Microsoft Assembler (MASM) 62 -- 3.4 Data Allocation Directives 63 -- 3.4.1 Define Byte (DB) 64 -- 3.4.2 Define Word (DW) 66 -- 3.4.3 Define Doubleword (DD) 66 -- 3.5 Symbolic Constants 67 -- 3.5.1 Equal-Sign Directive 67 -- 3.5.2 EQU Directive 68 -- 3.5.3 TEXTEQU Directive 68 -- 3.6 Data Transfer Instructions 70 -- 3.6.1 MOV Instruction 70 -- 3.6.2 Operands with Displacements 71 -- 3.6.3 XCHG Instruction 72 -- 3.7 Arithmetic Instructions 73 -- 3.7.1 INC and DEC Instructions 73 -- 3.7.2 ADD Instruction 74 -- 3.7.3 SUB Instruction 74 -- 3.7.4 Flags Affected by ADD and SUB 75 -- 3.8 Basic Operand Types 76 -- 3.8.1 Register Operands 77 -- 3.8.2 Immediate Operands 77 -- 3.8.3 Direct Operands 78 -- 3.8.4 Direct - Offset Operands 78 -- 3.10 Review Questions 79 -- 3.11 Programming Exercises 84 -- 4 Using the Assembler 87 -- 4.1 More About the Assembler and Linker 88 -- 4.1.1 Source Listing File 88 -- 4.1.2 Map File 89 -- 4.1.3 Assembling and Linking with MS-DOS Batch Files 90 -- 4.1.4 Memory Models 91 -- 4.1.5 Target Processor Directives 93 -- 4.2 Operators and Expressions 94 -- 4.2.1 Arithmetic Operators 94 -- 4.2.2 OFFSET, SEG, PTR, LABEL, and EVEN 96 -- 4.2.3 TYPE and SIZE Operators 99 -- 4.2.4 Borland TASM's ENUM Directive 100 -- 4.3 JMP and LOOP Instructions 102 -- 4.3.1 JMP Instruction 102 -- 4.3.2 LOOP Instruction 104 -- 4.3.3 LOOP, LOOPW, LOOPD Instructions 105 -- 4.4 Indirect Addressing 106 -- 4.4.1 Indirect Operands 106 -- 4.4.2 Based and Indexed Operands 109 -- 4.4.3 Base-Index Operands 111 -- 4.4.4 Base-Index with Displacement 112 -- 4.5 Debugging Workshop 112 -- 4.5.1 Operand Sizes and Addressing Errors 113 -- 4.6 More 80386 and 80486 Instructions 115 -- 4.6.1 MOVZX and MOVSX Instructions 115 -- 4.6.2 XADD Instruction 116 -- 4.7 Using a Link Library 116 -- 4.7.1 Selected Procedures in the Book's Link Library 116 -- 4.7.2 Displaying Random Integers 121 -- 4.7.3 Timing Events 122 -- 5u Procedures and Interrupts 131 -- 5.1 Stack Operations 132 -- 5.1.1 PUSH and POP Instructions 134 -- 5.2 Procedures 135 -- 5.2.1 PROC and ENDP Directives 136 -- 5.2.2 Sample Program: SUBS.ASM 137 -- 5.2.3 Nested Procedure Calls 139 -- 5.2.4 Near and Far Procedures 139 -- 5.2.5 Using Memory Models 141 -- 5.3 Procedure Parameters 143 -- 5.3.1 Passing Arguments in Registers 143 -- 5.4 Software Interrupts 145 -- 5.4.1 INT Instruction 145 -- 5.4.2 Redirecting Input-Output 147 -- 5.5 MS-DOS Function Calls 147 -- 5.5.1 Output Functions 148 -- 5.5.2 Input Functions 149 -- 5.5.3 Date/Time Functions 154 -- 5.6 Bios-Level Keyboard Input (INT 16H) 155 -- 5.7 Bios-Level Video Control (INT 10H) 156 -- 5.7.1 Displays, Modes, and Attributes 157 -- 5.7.2 Color Text Mode 159 -- 5.7.3 INT 10h Video Functions 161 -- 5.7.4 Writing Directly to Video Memory 169 -- 5.8 Recursion 170 -- 6 Conditional Processing 179 -- 6.1 Boolean and Comparison Instructions 180 -- 6.1.1 Flags Register 180 -- 6.1.2 AND Instruction 181 -- 6.1.3 OR Instruction 182 -- 6.1.4 XOR Instruction 184 -- 6.1.5 NOT Instruction 185 -- 6.1.6 NEG Instruction 185 -- 6.1.7 TEST Instruction 186 -- 6.1.8 BT, BTC, BTR, BTS Instructions 186 -- 6.1.9 BSF and BSR Instructions 187 -- 6.1.10 CMP Instruction 188 -- 6.1.11 CMPXCHG Instruction 189 -- 6.1.12 Boolean Assembler Operators 190 -- 6.2 Conditional Jumps 191 -- 6.2.1 Jcond Instruction 191 -- 6.2.2 Code Generation for Conditional Jumps 194 -- 6.2.3 Conditional Jump Examples 195 -- 6.2.4 SETcondition Instruction 202 -- 6.3 Conditional LOOPS 203 -- 6.3.1 LOOPZ and LOOPE Instructions 203 -- 6.3.2 LOOPNZ and LOOPNE Instructions 204 -- 6.4 High-Level Logic Structures 204 -- 6.4.1 Simple IF Statement 204 -- 6.4.2 Compound IF Statement 205 -- 6.4.3 WHILE Structure 206 -- 6.4.4 REPEAT-UNTIL Structure 208 -- 6.4.5 CASE Structure 209 -- 6.4.6 Table of Procedure Offsets 210 -- 6.4.7 Finite State Machines 212 -- 7 Integer Arithmetic 225 -- 7.1 Shift and Rotate Instructions 228 -- 7.1.1 SHL Instruction 228 -- 7.1.2 SHLD/SHRD Instructions 230 -- 7.1.3 SHR Instruction 231 -- 7.1.4 SAL and SAR Instructions 232 -- 7.1.5 ROL Instruction 233 -- 7.1.6 ROR Instruction 234 -- 7.1.7 RCL and RCR Instructions 234 -- 7.2 Sample Applications 235 -- 7.2.1 Shifting Multiple Bytes on the 8086 235 -- 7.2.2 Fast Multiplication and Division 236 -- 7.2.3 Displaying Binary Bits 236 -- 7.2.4 Isolating a Bit String 238 -- 7.2.5 RECORD Directive 239 -- 7.3 Extended Addition and Substraction 241 -- 7.3.1 ADC Instruction 241 -- 7.3.2 SBB Instruction 244 -- 7.4 Multiplication and Division 245 -- 7.4.1 MUL Instruction 246 -- 7.4.2 IMUL Instruction 247 -- 7.4.3 DIV Instruction 248 -- 7.4.4 IDIV Instruction 249 -- 7.4.5 CBW, CWD, CDQ, and CWDE Instructions 249 -- 7.4.6 Preventing Divide Overflow 250 -- 7.5 Application: Direct Video Output 251 -- 7.5.1 Set_videoseg Procedure 251 -- 7.5.2 Writechar_direct Procedure 252 -- 7.5.3 Writestring_direct Procedure 253 -- 7.6 ASCII and Packed Decimal Arithmetic 254 -- 7.6.1 AAA Instruction 255 -- 7.6.2 AAS Instruction 255 -- 7.6.3 AAM Instruction 255 -- 7.6.4 AAD Instruction 256 -- 7.6.5 DAA, DAS Instructions 256 -- 7.8.1 Bit Manipulation 260 -- 7.8.2 Bit-Mapped Sets 261 -- 7.8.3 Prime Numbers 262 -- 7.8.4 Arithmetic with Large Numbers 263 -- 7.8.5 Direct Video Output 265 -- 8 Structures and Macros 267 -- 8.1 Structures 267 -- 8.2 Introducing Macros 272 -- 8.2.1 Macros with Parameters 272 -- 8.2.2 Defining a Macro 274 -- 8.2.3 Example: mDisplayStr Macro 275 -- 8.2.4 Example: mGotoRowCol Macro 276 -- 8.2.5 Macros That Allocate Storage 277 -- 8.2.6 LOCAL Directive 278 -- 8.3 Special Macro Techniques 279 -- 8.3.1 Nested Macros 279 -- 8.3.2 Macros Calling Procedures 280 -- 8.3.3 Conditional-Assembly Directives 281 -- 8.3.4 EXITM Directive 283 -- 8.3.5 Macro Operators 284 -- 8.4 A Simple Macro Library 286 -- 8.4.1 mWriteliteral (Write Literal) 286 -- 8.4.2 mCondCall (Conditional Call) 287 -- 8.4.3 mCompJmp (Compare and Jump) 288 -- 8.4.4 mMult16 (Memory Multiply/16) 288 -- 8.4.5 mMOVE (Memory to Memory Move) 289 -- 8.4.6 mLongLoop (Long Loop) 290 -- 8.5 Advanced Macros and Directives 291 -- 8.5.1 REPT Directive 291 -- 8.5.2 Linked List Example 292 -- 8.5.3 IRP Directive 293 -- 8.5.4 Extended Jump Macro 294 -- 8.5.5 Generic Shift/Rotate Macro 296 -- 8.5.6 Additional Tips 297 -- 9 Numeric Conversions and Libraries 313 -- 9.2 Character Translation Methods 314 -- 9.2.1 XLAT Instruction 315 -- 9.2.2 Character Filtering 316 -- 9.2.3 Character Encoding 317 -- 9.3 Stack Parameters 320 -- 9.3.1 Creating a Stack Frame 320 -- 9.3.2 Passing Arguments by Reference 322 -- 9.3.3 LDS/LES/LFS/LGS/LSS (Load Far Pointer) 325 -- 9.3.4 ENTER Instruction 326 -- 9.3.5 LEAVE Instruction 327 -- 9.3.6 Passing Arguments the 'C' Language Way 327 -- 9.3.7 Procedure Declarations in Borland TASM 329 -- 9.3.8 Function Procedures (TASM) 331 -- 9.3.9 Procedure Declarations in Microsoft MASM 331 -- 9.4 Separately Assembled Modules 334 -- 9.4.1 PUBLIC Directive 334 -- 9.4.2 Creating a MultiModule Program 335 -- 9.5 Creating a Link Library 337 -- 9.6 Binary to ASCII Conversion 340 -- 9.6.1 Writeint Procedure 341 -- 9.7 ASCII to Binary Conversion 342 -- 9.7.1 Readint Procedure 343 -- 10 Strings and Arrays 355 -- 10.1 String Storage Methods 355 -- 10.1.2 Types of Strings 356 -- 10.2 String Primitive Instructions 357 -- 10.2.1 MOVS (Move String Data) 361 -- 10.2.2 Need for Speed 362 -- 10.2.3 CMPS (Compare Strings) 363 -- 10.2.4 SCAS (Scan String) 365
Tags from this library: No tags from this library for this title. Log in to add tags.
Star ratings
    Average rating: 0.0 (0 votes)
Holdings
Item type Current library Collection Call number Copy number Status Date due Barcode Item holds
Text Text Dr. S. R. Lasker Library, EWU
Reserve Section
Non-fiction 005.265 IRA 1999 (Browse shelf(Opens below)) C-1 Not For Loan 9100
CDs & DVDs CDs & DVDs Dr. S. R. Lasker Library, EWU
Audio Visual
Non-fiction 005.265 IRA 1999 (Browse shelf(Opens below)) C-1 Available CD-135
Text Text Dr. S. R. Lasker Library, EWU
Reserve Section
Non-fiction 005.265 IRA 1999 (Browse shelf(Opens below)) C-2 Not For Loan 9101
CDs & DVDs CDs & DVDs Dr. S. R. Lasker Library, EWU
Audio Visual
Non-fiction 005.265 IRA 1999 (Browse shelf(Opens below)) C-2 Available CD-136
Text Text Dr. S. R. Lasker Library, EWU
Circulation Section
Non-fiction 005.265 IRA 1999 (Browse shelf(Opens below)) C-3 Available 9102
CDs & DVDs CDs & DVDs Dr. S. R. Lasker Library, EWU
Audio Visual
Non-fiction 005.265 IRA 1999 (Browse shelf(Opens below)) C-3 Available CD-137
Text Text Dr. S. R. Lasker Library, EWU
Circulation Section
Non-fiction 005.265 IRA 1999 (Browse shelf(Opens below)) C-4 Available 9103
CDs & DVDs CDs & DVDs Dr. S. R. Lasker Library, EWU
Audio Visual
Non-fiction 005.265 IRA 1999 (Browse shelf(Opens below)) C-4 Available CD-138
Text Text Dr. S. R. Lasker Library, EWU
Circulation Section
Non-fiction 005.265 IRA 1999 (Browse shelf(Opens below)) C-5 Available 9104
CDs & DVDs CDs & DVDs Dr. S. R. Lasker Library, EWU
Audio Visual
Non-fiction 005.265 IRA 1999 (Browse shelf(Opens below)) C-5 Available CD-139
Total holds: 0

Rev. ed. of: Assembly language for the IBM-PC. 2nd ed. c1993.

Includes index.

TOC 1.1 Context of Assembly Language 1 --
1.1.1 What Is Assembly Language? 2 --
1.1.2 Assembly Language Applications 4 --
1.1.3 Machine Language 6 --
1.2 Data Representation 7 --
1.2.1 Binary Numbers 7 --
1.2.2 Converting Binary to Decimal 9 --
1.2.3 Hexadecimal Numbers 9 --
1.2.4 Signed Numbers 12 --
1.2.5 Character Storage 13 --
1.3 Introducing Assembly Language 15 --
1.3.1 Assembly Language Instructions 15 --
1.3.2 A Sample Debug Program 16 --
1.3.3 Debug Commands 18 --
2 Hardware and Software Architecture 23 --
2.1 16-Bit Intel Processor Architecture 24 --
2.1.1 Central Processing Unit 24 --
2.1.2 Registers 25 --
2.1.3 Status and Control Registers 27 --
2.1.4 Flags 28 --
2.1.5 Instruction Execution Cycle 29 --
2.1.6 Intel Microprocessor Family 29 --
2.2 32-Bit Intel Processor Architecture 31 --
2.2.1 Improved Execution Cycle 31 --
2.2.2 32-bit Register Set 32 --
2.3 Operating System and Memory 32 --
2.3.1 History of PC Memory Usage 32 --
2.3.2 Memory Architecture 33 --
2.3.3 System Startup Procedure 34 --
2.3.4 Video Display 36 --
2.3.5 Serial Communications Ports 37 --
2.3.6 Read-Only Memory (ROM) 37 --
2.3.7 Absolute Address Calculation 37 --
2.4 Components of a Microcomputer 38 --
2.4.1 Internal Components 39 --
2.4.2 Motherboard Designs 39 --
2.4.3 Bus Architecture 40 --
2.4.4 Video Adapter 41 --
2.4.5 Memory (RAM) 42 --
2.4.6 Video RAM 43 --
2.4.7 Secondary Storage Devices 44 --
2.5 Review Questions 46 --
2.6 Programming Exercises 48 --
3 Assembly Language Fundamentals 53 --
3.1 Basic Elements of Assembly Language 54 --
3.1.1 Constants and Expressions 54 --
3.1.2 Statements 55 --
3.1.3 Names 56 --
3.2 Sample Hello Program 57 --
3.3 Assembling, Linking, and Debugging 60 --
3.3.1 Borland Turbo Assembler (TASM) 61 --
3.3.2 Microsoft Assembler (MASM) 62 --
3.4 Data Allocation Directives 63 --
3.4.1 Define Byte (DB) 64 --
3.4.2 Define Word (DW) 66 --
3.4.3 Define Doubleword (DD) 66 --
3.5 Symbolic Constants 67 --
3.5.1 Equal-Sign Directive 67 --
3.5.2 EQU Directive 68 --
3.5.3 TEXTEQU Directive 68 --
3.6 Data Transfer Instructions 70 --
3.6.1 MOV Instruction 70 --
3.6.2 Operands with Displacements 71 --
3.6.3 XCHG Instruction 72 --
3.7 Arithmetic Instructions 73 --
3.7.1 INC and DEC Instructions 73 --
3.7.2 ADD Instruction 74 --
3.7.3 SUB Instruction 74 --
3.7.4 Flags Affected by ADD and SUB 75 --
3.8 Basic Operand Types 76 --
3.8.1 Register Operands 77 --
3.8.2 Immediate Operands 77 --
3.8.3 Direct Operands 78 --
3.8.4 Direct - Offset Operands 78 --
3.10 Review Questions 79 --
3.11 Programming Exercises 84 --
4 Using the Assembler 87 --
4.1 More About the Assembler and Linker 88 --
4.1.1 Source Listing File 88 --
4.1.2 Map File 89 --
4.1.3 Assembling and Linking with MS-DOS Batch Files 90 --
4.1.4 Memory Models 91 --
4.1.5 Target Processor Directives 93 --
4.2 Operators and Expressions 94 --
4.2.1 Arithmetic Operators 94 --
4.2.2 OFFSET, SEG, PTR, LABEL, and EVEN 96 --
4.2.3 TYPE and SIZE Operators 99 --
4.2.4 Borland TASM's ENUM Directive 100 --
4.3 JMP and LOOP Instructions 102 --
4.3.1 JMP Instruction 102 --
4.3.2 LOOP Instruction 104 --
4.3.3 LOOP, LOOPW, LOOPD Instructions 105 --
4.4 Indirect Addressing 106 --
4.4.1 Indirect Operands 106 --
4.4.2 Based and Indexed Operands 109 --
4.4.3 Base-Index Operands 111 --
4.4.4 Base-Index with Displacement 112 --
4.5 Debugging Workshop 112 --
4.5.1 Operand Sizes and Addressing Errors 113 --
4.6 More 80386 and 80486 Instructions 115 --
4.6.1 MOVZX and MOVSX Instructions 115 --
4.6.2 XADD Instruction 116 --
4.7 Using a Link Library 116 --
4.7.1 Selected Procedures in the Book's Link Library 116 --
4.7.2 Displaying Random Integers 121 --
4.7.3 Timing Events 122 --
5u Procedures and Interrupts 131 --
5.1 Stack Operations 132 --
5.1.1 PUSH and POP Instructions 134 --
5.2 Procedures 135 --
5.2.1 PROC and ENDP Directives 136 --
5.2.2 Sample Program: SUBS.ASM 137 --
5.2.3 Nested Procedure Calls 139 --
5.2.4 Near and Far Procedures 139 --
5.2.5 Using Memory Models 141 --
5.3 Procedure Parameters 143 --
5.3.1 Passing Arguments in Registers 143 --
5.4 Software Interrupts 145 --
5.4.1 INT Instruction 145 --
5.4.2 Redirecting Input-Output 147 --
5.5 MS-DOS Function Calls 147 --
5.5.1 Output Functions 148 --
5.5.2 Input Functions 149 --
5.5.3 Date/Time Functions 154 --
5.6 Bios-Level Keyboard Input (INT 16H) 155 --
5.7 Bios-Level Video Control (INT 10H) 156 --
5.7.1 Displays, Modes, and Attributes 157 --
5.7.2 Color Text Mode 159 --
5.7.3 INT 10h Video Functions 161 --
5.7.4 Writing Directly to Video Memory 169 --
5.8 Recursion 170 --
6 Conditional Processing 179 --
6.1 Boolean and Comparison Instructions 180 --
6.1.1 Flags Register 180 --
6.1.2 AND Instruction 181 --
6.1.3 OR Instruction 182 --
6.1.4 XOR Instruction 184 --
6.1.5 NOT Instruction 185 --
6.1.6 NEG Instruction 185 --
6.1.7 TEST Instruction 186 --
6.1.8 BT, BTC, BTR, BTS Instructions 186 --
6.1.9 BSF and BSR Instructions 187 --
6.1.10 CMP Instruction 188 --
6.1.11 CMPXCHG Instruction 189 --
6.1.12 Boolean Assembler Operators 190 --
6.2 Conditional Jumps 191 --
6.2.1 Jcond Instruction 191 --
6.2.2 Code Generation for Conditional Jumps 194 --
6.2.3 Conditional Jump Examples 195 --
6.2.4 SETcondition Instruction 202 --
6.3 Conditional LOOPS 203 --
6.3.1 LOOPZ and LOOPE Instructions 203 --
6.3.2 LOOPNZ and LOOPNE Instructions 204 --
6.4 High-Level Logic Structures 204 --
6.4.1 Simple IF Statement 204 --
6.4.2 Compound IF Statement 205 --
6.4.3 WHILE Structure 206 --
6.4.4 REPEAT-UNTIL Structure 208 --
6.4.5 CASE Structure 209 --
6.4.6 Table of Procedure Offsets 210 --
6.4.7 Finite State Machines 212 --
7 Integer Arithmetic 225 --
7.1 Shift and Rotate Instructions 228 --
7.1.1 SHL Instruction 228 --
7.1.2 SHLD/SHRD Instructions 230 --
7.1.3 SHR Instruction 231 --
7.1.4 SAL and SAR Instructions 232 --
7.1.5 ROL Instruction 233 --
7.1.6 ROR Instruction 234 --
7.1.7 RCL and RCR Instructions 234 --
7.2 Sample Applications 235 --
7.2.1 Shifting Multiple Bytes on the 8086 235 --
7.2.2 Fast Multiplication and Division 236 --
7.2.3 Displaying Binary Bits 236 --
7.2.4 Isolating a Bit String 238 --
7.2.5 RECORD Directive 239 --
7.3 Extended Addition and Substraction 241 --
7.3.1 ADC Instruction 241 --
7.3.2 SBB Instruction 244 --
7.4 Multiplication and Division 245 --
7.4.1 MUL Instruction 246 --
7.4.2 IMUL Instruction 247 --
7.4.3 DIV Instruction 248 --
7.4.4 IDIV Instruction 249 --
7.4.5 CBW, CWD, CDQ, and CWDE Instructions 249 --
7.4.6 Preventing Divide Overflow 250 --
7.5 Application: Direct Video Output 251 --
7.5.1 Set_videoseg Procedure 251 --
7.5.2 Writechar_direct Procedure 252 --
7.5.3 Writestring_direct Procedure 253 --
7.6 ASCII and Packed Decimal Arithmetic 254 --
7.6.1 AAA Instruction 255 --
7.6.2 AAS Instruction 255 --
7.6.3 AAM Instruction 255 --
7.6.4 AAD Instruction 256 --
7.6.5 DAA, DAS Instructions 256 --
7.8.1 Bit Manipulation 260 --
7.8.2 Bit-Mapped Sets 261 --
7.8.3 Prime Numbers 262 --
7.8.4 Arithmetic with Large Numbers 263 --
7.8.5 Direct Video Output 265 --
8 Structures and Macros 267 --
8.1 Structures 267 --
8.2 Introducing Macros 272 --
8.2.1 Macros with Parameters 272 --
8.2.2 Defining a Macro 274 --
8.2.3 Example: mDisplayStr Macro 275 --
8.2.4 Example: mGotoRowCol Macro 276 --
8.2.5 Macros That Allocate Storage 277 --
8.2.6 LOCAL Directive 278 --
8.3 Special Macro Techniques 279 --
8.3.1 Nested Macros 279 --
8.3.2 Macros Calling Procedures 280 --
8.3.3 Conditional-Assembly Directives 281 --
8.3.4 EXITM Directive 283 --
8.3.5 Macro Operators 284 --
8.4 A Simple Macro Library 286 --
8.4.1 mWriteliteral (Write Literal) 286 --
8.4.2 mCondCall (Conditional Call) 287 --
8.4.3 mCompJmp (Compare and Jump) 288 --
8.4.4 mMult16 (Memory Multiply/16) 288 --
8.4.5 mMOVE (Memory to Memory Move) 289 --
8.4.6 mLongLoop (Long Loop) 290 --
8.5 Advanced Macros and Directives 291 --
8.5.1 REPT Directive 291 --
8.5.2 Linked List Example 292 --
8.5.3 IRP Directive 293 --
8.5.4 Extended Jump Macro 294 --
8.5.5 Generic Shift/Rotate Macro 296 --
8.5.6 Additional Tips 297 --
9 Numeric Conversions and Libraries 313 --
9.2 Character Translation Methods 314 --
9.2.1 XLAT Instruction 315 --
9.2.2 Character Filtering 316 --
9.2.3 Character Encoding 317 --
9.3 Stack Parameters 320 --
9.3.1 Creating a Stack Frame 320 --
9.3.2 Passing Arguments by Reference 322 --
9.3.3 LDS/LES/LFS/LGS/LSS (Load Far Pointer) 325 --
9.3.4 ENTER Instruction 326 --
9.3.5 LEAVE Instruction 327 --
9.3.6 Passing Arguments the 'C' Language Way 327 --
9.3.7 Procedure Declarations in Borland TASM 329 --
9.3.8 Function Procedures (TASM) 331 --
9.3.9 Procedure Declarations in Microsoft MASM 331 --
9.4 Separately Assembled Modules 334 --
9.4.1 PUBLIC Directive 334 --
9.4.2 Creating a MultiModule Program 335 --
9.5 Creating a Link Library 337 --
9.6 Binary to ASCII Conversion 340 --
9.6.1 Writeint Procedure 341 --
9.7 ASCII to Binary Conversion 342 --
9.7.1 Readint Procedure 343 --
10 Strings and Arrays 355 --
10.1 String Storage Methods 355 --
10.1.2 Types of Strings 356 --
10.2 String Primitive Instructions 357 --
10.2.1 MOVS (Move String Data) 361 --
10.2.2 Need for Speed 362 --
10.2.3 CMPS (Compare Strings) 363 --
10.2.4 SCAS (Scan String) 365

CSE

Tahur Ahmed

There are no comments on this title.

to post a comment.