Loading...

Messages

Proposals

Stuck in your homework and missing deadline? Get urgent help in $10/Page with 24 hours deadline

Get Urgent Writing Help In Your Essays, Assignments, Homeworks, Dissertation, Thesis Or Coursework & Achieve A+ Grades.

Privacy Guaranteed - 100% Plagiarism Free Writing - Free Turnitin Report - Professional And Experienced Writers - 24/7 Online Support

What will be the hexadecimal value of al after these instructions execute? mov al,94h xor al,37h

19/12/2020 Client: saad24vbs Deadline: 10 Days

Downloaded From: www.bsit.zxq.net


For More BS-IT Books, Notes & Assignments visit: www.bsit.zxq.net


Assembly Language for x86 Processors


Sixth Edition


KIP R. IRVINE


Florida International University School of Computing and Information Sciences


Upper Saddle River Boston Columbus San Francisco New York Indianapolis London Toronto Sydney Singapore Tokyo Montreal


Dubai Madrid Hong Kong Mexico City Munich Paris Amsterdam Cape Town


Downloaded From: www.bsit.zxq.net


For More BS-IT Books, Notes & Assignments visit: www.bsit.zxq.net


Vice President and Editorial Director, ECS: Marcia J. Horton Editor-in-Chief: Michael Hirsch Executive Editor: Tracy Dunkelberger Assistant Editor: Melinda Haggerty Editorial Assistant: Allison Michael Vice President, Production: Vince O’Brien Senior Managing Editor: Scott Disanno Production Liaison: Jane Bonnell Production Editor: Maheswari PonSaravanan, TexTech International Senior Operations Supervisor: Alan Fischer Marketing Manager: Erin Davis Marketing Assistant: Mack Patterson Art Director: Kenny Beck Cover Designer: Laura C. Ierardi Cover Image: Color enhanced x-ray of nautilus shell / Bert Myers / Science Photo Library Art Editor: Greg Dulles Media Editor: Daniel Sandin Media Project Manager: Danielle Leone Composition/Full-Service Project Management: TexTech International


IA-32, Pentium, i486, Intel64, Celeron, and Intel 386 are trademarks of Intel Corporation. Athlon, Phenom, and Opteron are trademarks of Advanced Micro Devices. TASM and Turbo Debugger are trademarks of Borland International. Microsoft Assembler (MASM), Windows Vista, Windows 7, Windows NT, Windows Me, Windows 95, Windows 98, Windows 2000, Windows XP, MS-Windows, PowerPoint, Win32, DEBUG, WinDbg, MS-DOS, Visual Studio, Visual C++, and CodeView are registered trademarks of Microsoft Corporation. Autocad is a trademark of Autodesk. Java is a trademark of Sun Microsystems. PartitionMagic is a trademark of Symantec. All other trademarks or product names are the property of their respective owners.


Copyright © 2011, 2007, 2003, 1999 by Pearson Education, Inc., Upper Saddle River, New Jersey 07458.


All rights reserved. Manufactured in the United States of America. This publication is protected by Copyright and permissions should be obtained from the publisher prior to any prohibited reproduction, storage in a retrieval system, or transmission in any form or by any means, electronic, mechanical, photocopying, recording, or likewise. To obtain permission(s) to use materials from this work, please submit a written request to Pearson Higher Education, Permissions Department, 1 Lake Street, Upper Saddle River, NJ 07458.


Previously published as


Assembly Language for Intel-Based Computers.


The author and publisher of this book have used their best efforts in preparing this book. These efforts include the development, research, and testing of the theories and programs to determine their effectiveness. The author and pub- lisher make no warranty of any kind, expressed or implied, with regard to these programs or the documentation contained in this book. The author and publisher shall not be liable in any event for incidental or consequential damages in connection with, or arising out of, the furnishing, performance, or use of these programs.


Library of Congress Cataloging-in-Publication Data


Irvine, Kip R. Assembly language for x86 processors / Kip R. Irvine. -- 6th ed.


p. cm. Rev. ed. of: Assembly language for intel-based computers, 5th ed., 2007. ISBN 0-13-602212-X (alk. paper)


1. IBM microcomputers--Programming. 2. Assembler language (Computer program language) I. Irvine, Kip R. - Assembly language for intel-based computers. II. Title.


QA76.8.I77 2011 005.265--dc22 2009049014


ISBN-13: 978-0-13-602212-1


ISBN-10: 0-13-602212-X


10 9 8 7 6 5 4 3 2 1


Downloaded From: www.bsit.zxq.net


For More BS-IT Books, Notes & Assignments visit: www.bsit.zxq.net


To Jack and Candy Irvine


Downloaded From: www.bsit.zxq.net


For More BS-IT Books, Notes & Assignments visit: www.bsit.zxq.net


This page intentionally left blank


Downloaded From: www.bsit.zxq.net


For More BS-IT Books, Notes & Assignments visit: www.bsit.zxq.net


v


Contents


Preface xix


1


Basic Concepts 1


1.1 Welcome to Assembly Language 1


1.1.1 Good Questions to Ask 2 1.1.2 Assembly Language Applications 5 1.1.3 Section Review 6


1.2 Virtual Machine Concept 7


1.2.1 Section Review 9


1.3 Data Representation 9


1.3.1 Binary Integers 9 1.3.2 Binary Addition 11 1.3.3 Integer Storage Sizes 12 1.3.4 Hexadecimal Integers 13 1.3.5 Signed Integers 15 1.3.6 Character Storage 17 1.3.7 Section Review 19


1.4 Boolean Operations 22


1.4.1 Truth Tables for Boolean Functions 24 1.4.2 Section Review 26


1.5 Chapter Summary 26


1.6 Exercises 27


1.6.1 Programming Tasks 27 1.6.2 Nonprogramming Tasks 27


2


x86 Processor Architecture 29


2.1 General Concepts 29


2.1.1 Basic Microcomputer Design 30 2.1.2 Instruction Execution Cycle 31 2.1.3 Reading from Memory 33 2.1.4 How Programs Run 34 2.1.5 Section Review 35


Downloaded From: www.bsit.zxq.net


For More BS-IT Books, Notes & Assignments visit: www.bsit.zxq.net


vi Contents


2.2 x86 Architecture Details 36


2.2.1 Modes of Operation 36 2.2.2 Basic Execution Environment 36 2.2.3 Floating-Point Unit 39 2.2.4 Overview of Intel Microprocessors 39 2.2.5 Section Review 42


2.3 x86 Memory Management 43


2.3.1 Real-Address Mode 43 2.3.2 Protected Mode 45 2.3.3 Section Review 47


2.4 Components of a Typical x86 Computer 48


2.4.1 Motherboard 48 2.4.2 Video Output 50 2.4.3 Memory 50 2.4.4 Input-Output Ports and Device Interfaces 50 2.4.5 Section Review 52


2.5 Input-Output System 52


2.5.1 Levels of I/O Access 52 2.5.2 Section Review 55


2.6 Chapter Summary 55


2.7 Chapter Exercises 57


3


Assembly Language Fundamentals 58


3.1 Basic Elements of Assembly Language 58


3.1.1 Integer Constants 59 3.1.2 Integer Expressions 60 3.1.3 Real Number Constants 61 3.1.4 Character Constants 61 3.1.5 String Constants 61 3.1.6 Reserved Words 62 3.1.7 Identifiers 62 3.1.8 Directives 62 3.1.9 Instructions 63 3.1.10 The NOP (No Operation) Instruction 65 3.1.11 Section Review 66


3.2 Example: Adding and Subtracting Integers 66


3.2.1 Alternative Version of AddSub 69 3.2.2 Program Template 70 3.2.3 Section Review 70


3.3 Assembling, Linking, and Running Programs 71


3.3.1 The Assemble-Link-Execute Cycle 71 3.3.2 Section Review 77


Downloaded From: www.bsit.zxq.net


For More BS-IT Books, Notes & Assignments visit: www.bsit.zxq.net


Contents vii


3.4 Defining Data 77


3.4.1 Intrinsic Data Types 77 3.4.2 Data Definition Statement 77 3.4.3 Defining BYTE and SBYTE Data 78 3.4.4 Defining WORD and SWORD Data 80 3.4.5 Defining DWORD and SDWORD Data 81 3.4.6 Defining QWORD Data 81 3.4.7 Defining Packed Binary Coded Decimal (TBYTE) Data 82 3.4.8 Defining Real Number Data 83 3.4.9 Little Endian Order 83 3.4.10 Adding Variables to the AddSub Program 84 3.4.11 Declaring Uninitialized Data 85 3.4.12 Section Review 85


3.5 Symbolic Constants 86


3.5.1 Equal-Sign Directive 86 3.5.2 Calculating the Sizes of Arrays and Strings 87 3.5.3 EQU Directive 88 3.5.4 TEXTEQU Directive 89 3.5.5 Section Review 90


3.6 Real-Address Mode Programming (Optional) 90


3.6.1 Basic Changes 90


3.7 Chapter Summary 91


3.8 Programming Exercises 92


4


Data Transfers, Addressing, and Arithmetic 94


4.1 Data Transfer Instructions 94


4.1.1 Introduction 94 4.1.2 Operand Types 95 4.1.3 Direct Memory Operands 96 4.1.4 MOV Instruction 96 4.1.5 Zero/Sign Extension of Integers 98 4.1.6 LAHF and SAHF Instructions 100 4.1.7 XCHG Instruction 100 4.1.8 Direct-Offset Operands 101 4.1.9 Example Program (Moves) 102 4.1.10 Section Review 103


4.2 Addition and Subtraction 104


4.2.1 INC and DEC Instructions 104 4.2.2 ADD Instruction 104 4.2.3 SUB Instruction 105 4.2.4 NEG Instruction 105


Downloaded From: www.bsit.zxq.net


For More BS-IT Books, Notes & Assignments visit: www.bsit.zxq.net


viii Contents


4.2.5 Implementing Arithmetic Expressions 106 4.2.6 Flags Affected by Addition and Subtraction 106 4.2.7 Example Program (AddSub3) 110 4.2.8 Section Review 111


4.3 Data-Related Operators and Directives 112


4.3.1 OFFSET Operator 112 4.3.2 ALIGN Directive 113 4.3.3 PTR Operator 114 4.3.4 TYPE Operator 115 4.3.5 LENGTHOF Operator 115 4.3.6 SIZEOF Operator 116 4.3.7 LABEL Directive 116 4.3.8 Section Review 117


4.4 Indirect Addressing 117


4.4.1 Indirect Operands 118 4.4.2 Arrays 119 4.4.3 Indexed Operands 120 4.4.4 Pointers 121 4.4.5 Section Review 123


4.5 JMP and LOOP Instructions 124


4.5.1 JMP Instruction 124 4.5.2 LOOP Instruction 124 4.5.3 Summing an Integer Array 126 4.5.4 Copying a String 126 4.5.5 Section Review 127


4.6 Chapter Summary 128


4.7 Programming Exercises 129


5


Procedures 132


5.1 Introduction 132


5.2 Linking to an External Library 132


5.2.1 Background Information 133 5.2.2 Section Review 134


5.3 The Book’s Link Library 134


5.3.1 Overview 136 5.3.2 Individual Procedure Descriptions 137 5.3.3 Library Test Programs 149 5.3.4 Section Review 157


5.4 Stack Operations 157


5.4.1 Runtime Stack 158 5.4.2 PUSH and POP Instructions 160 5.4.3 Section Review 162


Downloaded From: www.bsit.zxq.net


For More BS-IT Books, Notes & Assignments visit: www.bsit.zxq.net


Contents ix


5.5 Defining and Using Procedures 163


5.5.1 PROC Directive 163 5.5.2 CALL and RET Instructions 165 5.5.3 Example: Summing an Integer Array 168 5.5.4 Flowcharts 169 5.5.5 Saving and Restoring Registers 170 5.5.6 Section Review 171


5.6 Program Design Using Procedures 172


5.6.1 Integer Summation Program (Design) 173 5.6.2 Integer Summation Implementation 175 5.6.3 Section Review 177


5.7 Chapter Summary 177


5.8 Programming Exercises 178


6


Conditional Processing 180


6.1 Introduction 180


6.2 Boolean and Comparison Instructions 181


6.2.1 The CPU Flags 182 6.2.2 AND Instruction 182 6.2.3 OR Instruction 183 6.2.4 Bit-Mapped Sets 184 6.2.5 XOR Instruction 186 6.2.6 NOT Instruction 187 6.2.7 TEST Instruction 187 6.2.8 CMP Instruction 188 6.2.9 Setting and Clearing Individual CPU Flags 189 6.2.10 Section Review 189


6.3 Conditional Jumps 190


6.3.1 Conditional Structures 190 6.3.2 J


cond


Instruction 191 6.3.3 Types of Conditional Jump Instructions 192 6.3.4 Conditional Jump Applications 195 6.3.5 Section Review 199


6.4 Conditional Loop Instructions 200


6.4.1 LOOPZ and LOOPE Instructions 200 6.4.2 LOOPNZ and LOOPNE Instructions 201 6.4.3 Section Review 201


6.5 Conditional Structures 202


6.5.1 Block-Structured IF Statements 202 6.5.2 Compound Expressions 204 6.5.3 WHILE Loops 206 6.5.4 Table-Driven Selection 208 6.5.5 Section Review 210


Downloaded From: www.bsit.zxq.net


For More BS-IT Books, Notes & Assignments visit: www.bsit.zxq.net


x Contents


6.6 Application: Finite-State Machines 211


6.6.1 Validating an Input String 211 6.6.2 Validating a Signed Integer 212 6.6.3 Section Review 216


6.7 Conditional Control Flow Directives 217


6.7.1 Creating IF Statements 218 6.7.2 Signed and Unsigned Comparisons 219 6.7.3 Compound Expressions 220 6.7.4 Creating Loops with .REPEAT and .WHILE 223


6.8 Chapter Summary 224


6.9 Programming Exercises 225


7


Integer Arithmetic 229


7.1 Introduction 229


7.2 Shift and Rotate Instructions 230


7.2.1 Logical Shifts and Arithmetic Shifts 230 7.2.2 SHL Instruction 231 7.2.3 SHR Instruction 232 7.2.4 SAL and SAR Instructions 233 7.2.5 ROL Instruction 234 7.2.6 ROR Instruction 235 7.2.7 RCL and RCR Instructions 235 7.2.8 Signed Overflow 236 7.2.9 SHLD/SHRD Instructions 236 7.2.10 Section Review 238


7.3 Shift and Rotate Applications 239


7.3.1 Shifting Multiple Doublewords 240 7.3.2 Binary Multiplication 241 7.3.3 Displaying Binary Bits 242 7.3.4 Isolating MS-DOS File Date Fields 242 7.3.5 Section Review 243


7.4 Multiplication and Division Instructions 243


7.4.1 MUL Instruction 243 7.4.2 IMUL Instruction 245 7.4.3 Measuring Program Execution Times 247 7.4.4 DIV Instruction 249 7.4.5 Signed Integer Division 250 7.4.6 Implementing Arithmetic Expressions 253 7.4.7 Section Review 255


7.5 Extended Addition and Subtraction 256


7.5.1 ADC Instruction 256 7.5.2 Extended Addition Example 257


Downloaded From: www.bsit.zxq.net


For More BS-IT Books, Notes & Assignments visit: www.bsit.zxq.net


Contents xi


7.5.3 SBB Instruction 258 7.5.4 Section Review 259


7.6 ASCII and Unpacked Decimal Arithmetic 260


7.6.1 AAA Instruction 261 7.6.2 AAS Instruction 262 7.6.3 AAM Instruction 263 7.6.4 AAD Instruction 263 7.6.5 Section Review 264


7.7 Packed Decimal Arithmetic 264


7.7.1 DAA Instruction 264 7.7.2 DAS Instruction 266 7.7.3 Section Review 266


7.8 Chapter Summary 266


7.9 Programming Exercises 267


8


Advanced Procedures 270


8.1 Introduction 270


8.2 Stack Frames 271


8.2.1 Stack Parameters 272 8.2.2 Accessing Stack Parameters 273 8.2.3 Local Variables 281 8.2.4 ENTER and LEAVE Instructions 285 8.2.5 LOCAL Directive 286 8.2.6 Section Review 289


8.3 Recursion 290


8.3.1 Recursively Calculating a Sum 291 8.3.2 Calculating a Factorial 292 8.3.3 Section Review 298


8.4 INVOKE, ADDR, PROC, and PROTO 299


8.4.1 INVOKE Directive 299 8.4.2 ADDR Operator 300 8.4.3 PROC Directive 301 8.4.4 PROTO Directive 304 8.4.5 Parameter Classifications 307 8.4.6 Example: Exchanging Two Integers 307 8.4.7 Debugging Tips 308 8.4.8 WriteStackFrame Procedure 309 8.4.9 Section Review 310


8.5 Creating Multimodule Programs 311


8.5.1 Hiding and Exporting Procedure Names 311 8.5.2 Calling External Procedures 312


Downloaded From: www.bsit.zxq.net


For More BS-IT Books, Notes & Assignments visit: www.bsit.zxq.net


xii Contents


8.5.3 Using Variables and Symbols across Module Boundaries 313 8.5.4 Example: ArraySum Program 314 8.5.5 Creating the Modules Using Extern 314 8.5.6 Creating the Modules Using INVOKE and PROTO 318 8.5.7 Section Review 321


8.6 Java Bytecodes 321


8.6.1 Java Virtual Machine 321 8.6.2 Instruction Set 322 8.6.3 Java Disassembly Examples 323


8.7 Chapter Summary 328


8.8 Programming Exercises 329


9


Strings and Arrays 332


9.1 Introduction 332


9.2 String Primitive Instructions 333


9.2.1 MOVSB, MOVSW, and MOVSD 334 9.2.2 CMPSB, CMPSW, and CMPSD 335 9.2.3 SCASB, SCASW, and SCASD 336 9.2.4 STOSB, STOSW, and STOSD 336 9.2.5 LODSB, LODSW, and LODSD 337 9.2.6 Section Review 337


9.3 Selected String Procedures 338


9.3.1 Str_compare Procedure 338 9.3.2 Str_length Procedure 339 9.3.3 Str_copy Procedure 340 9.3.4 Str_trim Procedure 340 9.3.5 Str_ucase Procedure 343 9.3.6 String Library Demo Program 344 9.3.7 Section Review 346


9.4 Two-Dimensional Arrays 346


9.4.1 Ordering of Rows and Columns 346 9.4.2 Base-Index Operands 347 9.4.3 Base-Index-Displacement Operands 349 9.4.4 Section Review 350


9.5 Searching and Sorting Integer Arrays 350


9.5.1 Bubble Sort 350 9.5.2 Binary Search 352 9.5.3 Section Review 359


9.6 Java Bytecodes: String Processing 359


9.7 Chapter Summary 360


9.8 Programming Exercises 361


Downloaded From: www.bsit.zxq.net


For More BS-IT Books, Notes & Assignments visit: www.bsit.zxq.net


Contents xiii


10


Structures and Macros 366


10.1 Structures 366


10.1.1 Defining Structures 367 10.1.2 Declaring Structure Variables 368 10.1.3 Referencing Structure Variables 370 10.1.4 Example: Displaying the System Time 372 10.1.5 Structures Containing Structures 375 10.1.6 Example: Drunkard’s Walk 375 10.1.7 Declaring and Using Unions 378 10.1.8 Section Review 381


10.2 Macros 382


10.2.1 Overview 382 10.2.2 Defining Macros 382 10.2.3 Invoking Macros 383 10.2.4 Additional Macro Features 384 10.2.5 Using the Book’s Macro Library 388 10.2.6 Example Program: Wrappers 394 10.2.7 Section Review 395


10.3 Conditional-Assembly Directives 396


10.3.1 Checking for Missing Arguments 397 10.3.2 Default Argument Initializers 398 10.3.3 Boolean Expressions 399 10.3.4 IF, ELSE, and ENDIF Directives 399 10.3.5 The IFIDN and IFIDNI Directives 400 10.3.6 Example: Summing a Matrix Row 401 10.3.7 Special Operators 404 10.3.8 Macro Functions 407 10.3.9 Section Review 409


10.4 Defining Repeat Blocks 410


10.4.1 WHILE Directive 410 10.4.2 REPEAT Directive 410 10.4.3 FOR Directive 411 10.4.4 FORC Directive 412 10.4.5 Example: Linked List 412 10.4.6 Section Review 414


10.5 Chapter Summary 415


10.6 Programming Exercises 416


11


MS-Windows Programming 419


11.1 Win32 Console Programming 419


11.1.1 Background Information 420 11.1.2 Win32 Console Functions 424 11.1.3 Displaying a Message Box 426


Downloaded From: www.bsit.zxq.net


For More BS-IT Books, Notes & Assignments visit: www.bsit.zxq.net


xiv Contents


11.1.4 Console Input 429 11.1.5 Console Output 435 11.1.6 Reading and Writing Files 437 11.1.7 File I/O in the Irvine32 Library 442 11.1.8 Testing the File I/O Procedures 444 11.1.9 Console Window Manipulation 447 11.1.10 Controlling the Cursor 450 11.1.11 Controlling the Text Color 451 11.1.12 Time and Date Functions 453 11.1.13 Section Review 456


11.2 Writing a Graphical Windows Application 457


11.2.1 Necessary Structures 458 11.2.2 The MessageBox Function 459 11.2.3 The WinMain Procedure 460 11.2.4 The WinProc Procedure 460 11.2.5 The ErrorHandler Procedure 461 11.2.6 Program Listing 461 11.2.7 Section Review 465


11.3 Dynamic Memory Allocation 466


11.3.1 HeapTest Programs 469 11.3.2 Section Review 473


11.4 x86 Memory Management 473


11.4.1 Linear Addresses 473 11.4.2 Page Translation 477 11.4.3 Section Review 479


11.5 Chapter Summary 479


11.6 Programming Exercises 481


12


Floating-Point Processing and Instruction Encoding 483


12.1 Floating-Point Binary Representation 483


12.1.1 IEEE Binary Floating-Point Representation 484 12.1.2 The Exponent 485 12.1.3 Normalized Binary Floating-Point Numbers 486 12.1.4 Creating the IEEE Representation 486 12.1.5 Converting Decimal Fractions to Binary Reals 488 12.1.6 Section Review 490


12.2 Floating-Point Unit 490


12.2.1 FPU Register Stack 491 12.2.2 Rounding 493 12.2.3 Floating-Point Exceptions 495 12.2.4 Floating-Point Instruction Set 495


Downloaded From: www.bsit.zxq.net


For More BS-IT Books, Notes & Assignments visit: www.bsit.zxq.net


Contents xv


12.2.5 Arithmetic Instructions 498 12.2.6 Comparing Floating-Point Values 502 12.2.7 Reading and Writing Floating-Point Values 504 12.2.8 Exception Synchronization 506 12.2.9 Code Examples 507 12.2.10 Mixed-Mode Arithmetic 508 12.2.11 Masking and Unmasking Exceptions 509 12.2.12 Section Review 511


12.3 x86 Instruction Encoding 512


12.3.1 Instruction Format 512 12.3.2 Single-Byte Instructions 513 12.3.3 Move Immediate to Register 514 12.3.4 Register-Mode Instructions 514 12.3.5 Processor Operand-Size Prefix 515 12.3.6 Memory-Mode Instructions 516 12.3.7 Section Review 519


12.4 Chapter Summary 520


12.5 Programming Exercises 521


13


High-Level Language Interface 525


13.1 Introduction 525


13.1.1 General Conventions 526 13.1.2 .MODEL Directive 527 13.1.3 Section Review 529


13.2 Inline Assembly Code 529


13.2.1 __asm Directive in Microsoft Visual C++ 529 13.2.2 File Encryption Example 532 13.2.3 Section Review 535


13.3 Linking to C/C++ in Protected Mode 535


13.3.1 Using Assembly Language to Optimize C++ Code 536 13.3.2 Calling C and C++ Functions 542 13.3.3 Multiplication Table Example 544 13.3.4 Calling C Library Functions 547 13.3.5 Directory Listing Program 550 13.3.6 Section Review 552


13.4 Linking to C/C++ in Real-Address Mode 552


13.4.1 Linking to Borland C++ 553 13.4.2 ReadSector Example 554 13.4.3 Example: Large Random Integers 558 13.4.4 Section Review 559


13.5 Chapter Summary 560


13.6 Programming Exercises 560


Downloaded From: www.bsit.zxq.net


For More BS-IT Books, Notes & Assignments visit: www.bsit.zxq.net


xvi Contents


14


16-Bit MS-DOS Programming 562


14.1 MS-DOS and the IBM-PC 562


14.1.1 Memory Organization 563 14.1.2 Redirecting Input-Output 564 14.1.3 Software Interrupts 565 14.1.4 INT Instruction 565 14.1.5 Coding for 16-Bit Programs 567 14.1.6 Section Review 568


14.2 MS-DOS Function Calls (INT 21h) 568


14.2.1 Selected Output Functions 570 14.2.2 Hello World Program Example 572 14.2.3 Selected Input Functions 573 14.2.4 Date/Time Functions 577 14.2.5 Section Review 581


14.3 Standard MS-DOS File I/O Services 581


14.3.1 Create or Open File (716Ch) 583 14.3.2 Close File Handle (3Eh) 584 14.3.3 Move File Pointer (42h) 584 14.3.4 Get File Creation Date and Time 585 14.3.5 Selected Library Procedures 585 14.3.6 Example: Read and Copy a Text File 586 14.3.7 Reading the MS-DOS Command Tail 588 14.3.8 Example: Creating a Binary File 591 14.3.9 Section Review 594


14.4 Chapter Summary 594


14.5 Programming Exercises 596


Chapters are available from the Companion Web site


15


Disk Fundamentals


16


BIOS-Level Programming


17


Expert MS-DOS Programming


Appendix A MASM Reference 598 Appendix B The x86 Instruction Set 620 Appendix C Answers to Review Questions 655


Downloaded From: www.bsit.zxq.net


For More BS-IT Books, Notes & Assignments visit: www.bsit.zxq.net


Contents xvii


Appendices are available from the Companion Web site


Appendix D BIOS and MS-DOS Interrupts Appendix E Answers to Review Questions


(Chapters 15–17)


Index 699


Downloaded From: www.bsit.zxq.net


For More BS-IT Books, Notes & Assignments visit: www.bsit.zxq.net


This page intentionally left blank


Downloaded From: www.bsit.zxq.net


For More BS-IT Books, Notes & Assignments visit: www.bsit.zxq.net


xix


Preface


Assembly Language for x86 Processors, Sixth Edition, teaches assembly language programming and architecture for Intel and AMD processors. It is an appropriate text for the following types of college courses:


• Assembly Language Programming • Fundamentals of Computer Systems • Fundamentals of Computer Architecture


Students use Intel or AMD processors and program with Microsoft Macro Assembler (MASM), running on Windows 98, XP, Vista, and Windows 7. Although this book was originally designed as a programming textbook for college students, it serves as an effective supplement to computer architecture courses. As a testament to its popularity, previous editions have been translated into Spanish, Korean, Chinese, French, Russian, and Polish.


Emphasis of Topics This edition includes topics that lead naturally into subsequent courses in computer architecture, operating systems, and compiler writing:


• Virtual machine concept • Instruction set architecture • Elementary Boolean operations • Instruction execution cycle • Memory access and handshaking • Interrupts and polling • Hardware-based I/O • Floating-point binary representation


Other topics relate specially to Intel and AMD architecture:


• Protected memory and paging • Memory segmentation in real-address mode • 16-bit interrupt handling • MS-DOS and BIOS system calls (interrupts) • Floating-point unit architecture and programming • Instruction encoding


Certain examples presented in the book lend themselves to courses that occur later in a computer science curriculum:


• Searching and sorting algorithms • High-level language structures


Downloaded From: www.bsit.zxq.net


For More BS-IT Books, Notes & Assignments visit: www.bsit.zxq.net


xx Preface


• Finite-state machines • Code optimization examples


What’s New in the Sixth Edition In this revision, we have placed a strong emphasis on improving the descriptions of important programming concepts and relevant program examples.


• We have added numerous step-by-step descriptions of sample programs, particularly in Chapters 1–8.


• Many new illustrations have been inserted into the chapters to improve student comprehen- sion of concepts and details.


• Java Bytecodes: The Java Virtual Machine (JVM) provides an excellent real-life example of a stack-oriented architecture. It provides an excellent contrast to x86 architecture. Therefore, in Chapters 8 and 9, the author explains the basic operation of Java bytecodes with short illus- trative examples. Numerous short examples are shown in disassembled bytecode format, fol- lowed by detailed step-by-step explanations.


• Selected programming exercises have been replaced in the first 8 chapters. Programming exercises are now assigned stars to indicate their difficulty. One star is the easiest, four stars indicate the most difficult level.


• Tutorial videos by the author are available on the Companion Web site (www.pearsonhighered.com/ irvine) to explain worked-out programming exercises.


• The order of chapters in the second half of the book has been revised to form a more logical sequence of topics, and selected chapters are supplied in electronic form for easy searching.


This book is still focused on its primary goal, to teach students how to write and debug programs at the machine level. It will never replace a complete book on computer architecture, but it does give students the first-hand experience of writing software in an environment that teaches them how a computer works. Our premise is that students retain knowledge better when theory is combined with experience. In an engineering course, students construct prototypes; in a com- puter architecture course, students should write machine-level programs. In both cases, they have a memorable experience that gives them the confidence to work in any OS/machine-oriented environment.


Real Mode and Protected Mode This edition emphasizes 32-bit protected mode, but it still has three electronic chapters devoted to real-mode programming. For example, there is an entire chapter on BIOS programming for the keyboard, video display (including graphics), and mouse. Another chapter covers MS-DOS programming using interrupts (system calls). Students can benefit from programming directly to hardware and the BIOS.


The examples in the first half of the book are nearly all presented as 32-bit text-oriented appli- cations running in protected mode using the flat memory model. This approach is wonderfully simple because it avoids the complications of segment-offset addressing. Specially marked para- graphs and popup boxes point out occasional differences between protected mode and real-mode programming. Most differences are abstracted by the book’s parallel link libraries for real-mode and protected mode programming.


Downloaded From: www.bsit.zxq.net


For More BS-IT Books, Notes & Assignments visit: www.bsit.zxq.net


Preface xxi


Link Libraries We supply two versions of the link library that students use for basic input- output, simulations, timing, and other useful stuff. The 32-bit version (Irvine32.lib) runs in protected mode, sending its output to the Win32 console. The 16-bit version (Irvine16.lib) runs in real-address mode. Full source code for the libraries is supplied on the Companion Web site. The link libraries are available only for convenience, not to prevent students from learning how to program input-output themselves. Students are encouraged to create their own libraries.


Included Software and Examples All the example programs were tested with Microsoft Macro Assembler Version 10.0, running in Microsoft Visual Studio 2010. In addition, batch files are supplied that permit students to assemble and run applications from the Windows command prompt. The 32-bit C++ applications in Chapter 14 were tested with Microsoft Visual C++ .NET.


Web Site Information Updates and corrections to this book may be found at the Companion Web site, including additional programming projects for instructors to assign at the ends of chapters.


Overall Goals The following goals of this book are designed to broaden the student’s interest and knowledge in topics related to assembly language:


• Intel and AMD processor architecture and programming • Real-address mode and protected mode programming • Assembly language directives, macros, operators, and program structure • Programming methodology, showing how to use assembly language to create system-level


software tools and application programs • Computer hardware manipulation • Interaction between assembly language programs, the operating system, and other applica-


tion programs


One of our goals is to help students approach programming problems with a machine-level mind set. It is important to think of the CPU as an interactive tool, and to learn to monitor its operation as directly as possible. A debugger is a programmer’s best friend, not only for catching errors, but as an educational tool that teaches about the CPU and operating system. We encourage stu- dents to look beneath the surface of high-level languages and to realize that most programming languages are designed to be portable and, therefore, independent of their host machines. In addition to the short examples, this book contains hundreds of ready-to-run programs that dem- onstrate instructions or ideas as they are presented in the text. Reference materials, such as guides to MS-DOS interrupts and instruction mnemonics, are available at the end of the book.


Required Background The reader should already be able to program confidently in at least one high-level programming language such as Python, Java, C, or C++. One chapter covers C++ interfacing, so it is very helpful to have a compiler on hand. I have used this book in the class- room with majors in both computer science and management information systems, and it has been used elsewhere in engineering courses.


Features Complete Program Listings The Companion Web site contains supplemental learning mate- rials, study guides, and all the source code from the book’s examples. An extensive link library


Downloaded From: www.bsit.zxq.net


For More BS-IT Books, Notes & Assignments visit: www.bsit.zxq.net


xxii Preface


is supplied with the book, containing more than 30 procedures that simplify user input-output, numeric processing, disk and file handling, and string handling. In the beginning stages of the course, students can use this library to enhance their programs. Later, they can create their own procedures and add them to the library.


Programming Logic Two chapters emphasize Boolean logic and bit-level manipulation. A conscious attempt is made to relate high-level programming logic to the low-level details of the machine. This approach helps students to create more efficient implementations and to better understand how compilers generate object code.


Hardware and Operating System Concepts The first two chapters introduce basic hard- ware and data representation concepts, including binary numbers, CPU architecture, status flags, and memory mapping. A survey of the computer’s hardware and a historical perspective of the Intel processor family helps students to better understand their target computer system.


Structured Programming Approach Beginning with Chapter 5, procedures and functional decomposition are emphasized. Students are given more complex programming exercises, requiring them to focus on design before starting to write code.


Java Bytecodes and the Java Virtual Machine In Chapters 8 and 9, the author explains the basic operation of Java bytecodes with short illustrative examples. Numerous short examples are shown in disassembled bytecode format, followed by detailed step-by-step explanations.


Disk Storage Concepts Students learn the fundamental principles behind the disk storage system on MS-Windows–based systems from hardware and software points of view.

Homework is Completed By:

Writer Writer Name Amount Client Comments & Rating
Instant Homework Helper

ONLINE

Instant Homework Helper

$36

She helped me in last minute in a very reasonable price. She is a lifesaver, I got A+ grade in my homework, I will surely hire her again for my next assignments, Thumbs Up!

Order & Get This Solution Within 3 Hours in $25/Page

Custom Original Solution And Get A+ Grades

  • 100% Plagiarism Free
  • Proper APA/MLA/Harvard Referencing
  • Delivery in 3 Hours After Placing Order
  • Free Turnitin Report
  • Unlimited Revisions
  • Privacy Guaranteed

Order & Get This Solution Within 6 Hours in $20/Page

Custom Original Solution And Get A+ Grades

  • 100% Plagiarism Free
  • Proper APA/MLA/Harvard Referencing
  • Delivery in 6 Hours After Placing Order
  • Free Turnitin Report
  • Unlimited Revisions
  • Privacy Guaranteed

Order & Get This Solution Within 12 Hours in $15/Page

Custom Original Solution And Get A+ Grades

  • 100% Plagiarism Free
  • Proper APA/MLA/Harvard Referencing
  • Delivery in 12 Hours After Placing Order
  • Free Turnitin Report
  • Unlimited Revisions
  • Privacy Guaranteed

6 writers have sent their proposals to do this homework:

Top Essay Tutor
Homework Guru
University Coursework Help
Helping Hand
Writer Writer Name Offer Chat
Top Essay Tutor

ONLINE

Top Essay Tutor

I have more than 12 years of experience in managing online classes, exams, and quizzes on different websites like; Connect, McGraw-Hill, and Blackboard. I always provide a guarantee to my clients for their grades.

$105 Chat With Writer
Homework Guru

ONLINE

Homework Guru

Hi dear, I am ready to do your homework in a reasonable price and in a timely manner.

$102 Chat With Writer
University Coursework Help

ONLINE

University Coursework Help

Hi dear, I am ready to do your homework in a reasonable price.

$102 Chat With Writer
Helping Hand

ONLINE

Helping Hand

I am an Academic writer with 10 years of experience. As an Academic writer, my aim is to generate unique content without Plagiarism as per the client’s requirements.

$100 Chat With Writer

Let our expert academic writers to help you in achieving a+ grades in your homework, assignment, quiz or exam.

Similar Homework Questions

U1 bus times truro - W2. Discussion - Clark civility index - Kks power plant classification system pdf - Why must the crucible be cooled before weighing - Systemic ethical issues chocolate slavery - Incision and drainage foot cpt code - Nani surun desu ka - O captain my captain discussion questions - DNP-DPI Project- QUALITY IMPROVEMENT PROJECT - Nissan of dearborn dearborn mi - Safe work method statement template nsw - Adams v lindsell postal rule - Harvey amwake cpa - Sensation and perception psychology test - Information Technology Importance in Strategic Planning - Blood test north middlesex - How is point of service model financed - Market segmentation of coca cola pdf - Statistics - Analyze Walmart DUE 2 Nov 2020 by 1pm eastern time zone - Final Reflection - 3 pages - An accusation of sexual harassment in pro sports - Stephanie buttermore jeff nippard - Where is the holderness coast - Mikrotik switch trunk port - Geka hose fittings screwfix - Thermo king alarm 61 - Shakespeare in love worksheet answers - Box and whisker plot questions - Charts - Transportation draft paper - Vulnerability Process and Assessment Memorandum - Dance - Characteristics of a legitimate and qualified nutrition expert include - Bibl 104 quiz 1 answers - Ordered stem and leaf diagram - Kinky copies may buy a high volume copier - Enter a balanced equation for the combustion of ethanol - Health Care Field Research Draft - Rosemount 8750wa magnetic flowmeter manual - Bcc dwelling house code - Nouns verbs adjectives adverbs - Https shop lululemon com secure orders returns jsp - Confined space risk assessment form - Chinese diesel heater change from hz to c - Nyse supplemental listing application - Renoir the large bathers 1887 - Blue collar brilliance pdf - Did ned kellys mum sell him - Big mack switch activities - POL 201 American National Government NO PLAGIARISM PLZ - Management Fundamentals - Quality Analysis - Blue ocean strategy table of contents - Calcot manor salt scrub - Nyt the real campus scourge - Neo quantum air drysuit - Log structured file system - Nursing Concepts Of Teaching & Learning Discussion W3 - Animal farm review answers - What does el toro loco mean in english - Wish barbara o connor quizlet - Front office department chart - Frankenstein chapter 13 summary - Duke university campus life - Personal leadership development plan ncoa - Bodyfitbalance glute guide 2.0 pdf - Gloria and mark marriage boot camp - Why are igneous rocks called primary rocks - English - John hancock building structure - Ionic bond formation of magnesium chloride - Ice melting in water final temperature - Ucwv edu elearn - Panera bread company case study answers - Code of conduct and ethics nsw police - ECS 3003 - ChatGPT Deutsch Kostenlos – Ähnelt dem Social-Media-Marketing - How to prove diagonals bisect each other - Uts room booking system - Glasgow caledonian university graduation gifts - Forensic accounting questions and answers pdf - As nzs 3666.2 2011 - Fahrenheit in a sentence - Bbva compass marketing resource allocation case solution - Langley sound and light - Cryptography - Imagery in a rose for emily - Caustic fluid splashes can damage eyesight permanently - Ph level of buxton water - Text to text connections examples - Toyota recall 2009 case study - Shadow health focused assessment cough - Intel iris pro graphics 5200 photoshop - Media ethics issues 2016 - Psychology sensation and perception worksheet answers - Introduction to the bible syllabus - Discussion question - Are You Worried About Your Assignments?