Home > Store

Assembly Language for x86 Processors, 6th Edition

Register your product to gain access to bonus material or receive a coupon.

Assembly Language for x86 Processors, 6th Edition

Book

  • Sorry, this book is no longer in print.
Not for Sale

About

Features

Flexibility
– Offers optional chapter topics in the final 7 chapters.

– Allows instructors to cover these chapters in varying order and depth.

32-bit, Protected-mode programming as the default model
– Uses the native mode of the IA-32 processor family (Intel 386 and later).

– Makes addressing easier to understand because students no longer deal with memory segmentation issues. Students can create applications that take full advantage of 32-bit Intel processors, such as protected-mode and flat memory addressing. This also allows students to create Microsoft® Windows applications.

Extensive link libraries
– For both 32-bit and 16-bit programming.

– Contains more than 40 procedures that simplify input/output, numeric processing, disk and file handling, and string handling.

Testbanks for each chapter
– Prepared by the author.

– Aids instructors in preparing exams.

Top-down program design demonstration and explanation

– Teaches students effective design techniques that apply to multiple programming courses.
– Gives students clear-cut methods for organizing nontrivial programs as assembly language is by nature unstructured.
– Assists students in forming visual images of program design and logic with flowcharts.

PowerPoint® lecture slides
– Prepared by the author in the supplemental material.

– Enables instructors to have prepared lectures; allows students to print out and study the slides as lecture notes.

Review exercises
– At the end of every section.

– Aids students in their comprehension skills.
– Answers to questions are included for instructors to use in test material.

Programming exercises with solutions.

– Gives students first-hand experience in writing software and allows them to immediately check on their results.

Companion Web site
– With lists of errata, Frequently Asked Questions, new programs, and articles about special topics.

– Enables students to reinforce their understanding of the material presented in the course. Receives approximately 80,000 hits per month–the most extensive Web site by any published assembly-language programming author.

– Assembly Language Workbook on Web site provides expanded drill and practice on basic numeric and data manipulation skills, a feature provided by no other author.

VideoNotes
VideoNotes are step-by-step video tutorials specifically designed to enhance the programming concepts presented in Irvine, Assembly Language for X86 Processors, 6e. Students can view the entire problem-solving process outside of the classroom–when they need help the most. VideoNotes are available with the purchase of a new copy of select titles. Go to www.pearsonhighered.com/videonotes for a brief VideoNotes demo.

SUPPLEMENTS

Instructor Resource Materials (Catalog Download):
  • PowerPoint Lecture Slides
  • Instructor Solutions Manual
Student Resource Materials (available on Publisher's Web site):

Description

  • Copyright 2011
  • Edition: 6th
  • Book
  • ISBN-10: 0-13-602212-X
  • ISBN-13: 978-0-13-602212-1

Assembly Language for x86 Processors, 6/e is ideal for undergraduate courses in assembly language programming and introductory courses in computer systems and computer architecture.

Written specifically for the Intel/Windows/DOS platform, this complete and fully updated study of assembly language teaches students to write and debug programs at the machine level. Based on the Intel processor family, the text simplifies and demystifies concepts that students need to grasp before they can go on to more advanced computer architecture and operating systems courses. Students put theory into practice through writing software at the machine level, creating a memorable experience that gives them the confidence to work in any OS/machine-oriented environment. Proficiency in one other programming language, preferably Java, C, or C++, is recommended.

Sample Content

Table of 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

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

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

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

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 Jcond 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

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 .REPEAT and .WHILE Directives 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

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

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 3599.6 Java Bytecodes: String Processing 359

9.7 Chapter Summary 360

9.8 Programming Exercises 361

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

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

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 55913.5 Chapter Summary 560

13.6 Programming Exercises 561

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 Chapter 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 

Updates

Submit Errata

More Information

InformIT Promotional Mailings & Special Offers

I would like to receive exclusive offers and hear about products from InformIT and its family of brands. I can unsubscribe at any time.

Overview


Pearson Education, Inc., 221 River Street, Hoboken, New Jersey 07030, (Pearson) presents this site to provide information about products and services that can be purchased through this site.

This privacy notice provides an overview of our commitment to privacy and describes how we collect, protect, use and share personal information collected through this site. Please note that other Pearson websites and online products and services have their own separate privacy policies.

Collection and Use of Information


To conduct business and deliver products and services, Pearson collects and uses personal information in several ways in connection with this site, including:

Questions and Inquiries

For inquiries and questions, we collect the inquiry or question, together with name, contact details (email address, phone number and mailing address) and any other additional information voluntarily submitted to us through a Contact Us form or an email. We use this information to address the inquiry and respond to the question.

Online Store

For orders and purchases placed through our online store on this site, we collect order details, name, institution name and address (if applicable), email address, phone number, shipping and billing addresses, credit/debit card information, shipping options and any instructions. We use this information to complete transactions, fulfill orders, communicate with individuals placing orders or visiting the online store, and for related purposes.

Surveys

Pearson may offer opportunities to provide feedback or participate in surveys, including surveys evaluating Pearson products, services or sites. Participation is voluntary. Pearson collects information requested in the survey questions and uses the information to evaluate, support, maintain and improve products, services or sites, develop new products and services, conduct educational research and for other purposes specified in the survey.

Contests and Drawings

Occasionally, we may sponsor a contest or drawing. Participation is optional. Pearson collects name, contact information and other information specified on the entry form for the contest or drawing to conduct the contest or drawing. Pearson may collect additional personal information from the winners of a contest or drawing in order to award the prize and for tax reporting purposes, as required by law.

Newsletters

If you have elected to receive email newsletters or promotional mailings and special offers but want to unsubscribe, simply email information@informit.com.

Service Announcements

On rare occasions it is necessary to send out a strictly service related announcement. For instance, if our service is temporarily suspended for maintenance we might send users an email. Generally, users may not opt-out of these communications, though they can deactivate their account information. However, these communications are not promotional in nature.

Customer Service

We communicate with users on a regular basis to provide requested services and in regard to issues relating to their account we reply via email or phone in accordance with the users' wishes when a user submits their information through our Contact Us form.

Other Collection and Use of Information


Application and System Logs

Pearson automatically collects log data to help ensure the delivery, availability and security of this site. Log data may include technical information about how a user or visitor connected to this site, such as browser type, type of computer/device, operating system, internet service provider and IP address. We use this information for support purposes and to monitor the health of the site, identify problems, improve service, detect unauthorized access and fraudulent activity, prevent and respond to security incidents and appropriately scale computing resources.

Web Analytics

Pearson may use third party web trend analytical services, including Google Analytics, to collect visitor information, such as IP addresses, browser types, referring pages, pages visited and time spent on a particular site. While these analytical services collect and report information on an anonymous basis, they may use cookies to gather web trend information. The information gathered may enable Pearson (but not the third party web trend services) to link information with application and system log data. Pearson uses this information for system administration and to identify problems, improve service, detect unauthorized access and fraudulent activity, prevent and respond to security incidents, appropriately scale computing resources and otherwise support and deliver this site and its services.

Cookies and Related Technologies

This site uses cookies and similar technologies to personalize content, measure traffic patterns, control security, track use and access of information on this site, and provide interest-based messages and advertising. Users can manage and block the use of cookies through their browser. Disabling or blocking certain cookies may limit the functionality of this site.

Do Not Track

This site currently does not respond to Do Not Track signals.

Security


Pearson uses appropriate physical, administrative and technical security measures to protect personal information from unauthorized access, use and disclosure.

Children


This site is not directed to children under the age of 13.

Marketing


Pearson may send or direct marketing communications to users, provided that

  • Pearson will not use personal information collected or processed as a K-12 school service provider for the purpose of directed or targeted advertising.
  • Such marketing is consistent with applicable law and Pearson's legal obligations.
  • Pearson will not knowingly direct or send marketing communications to an individual who has expressed a preference not to receive marketing.
  • Where required by applicable law, express or implied consent to marketing exists and has not been withdrawn.

Pearson may provide personal information to a third party service provider on a restricted basis to provide marketing solely on behalf of Pearson or an affiliate or customer for whom Pearson is a service provider. Marketing preferences may be changed at any time.

Correcting/Updating Personal Information


If a user's personally identifiable information changes (such as your postal address or email address), we provide a way to correct or update that user's personal data provided to us. This can be done on the Account page. If a user no longer desires our service and desires to delete his or her account, please contact us at customer-service@informit.com and we will process the deletion of a user's account.

Choice/Opt-out


Users can always make an informed choice as to whether they should proceed with certain services offered by InformIT. If you choose to remove yourself from our mailing list(s) simply visit the following page and uncheck any communication you no longer want to receive: www.informit.com/u.aspx.

Sale of Personal Information


Pearson does not rent or sell personal information in exchange for any payment of money.

While Pearson does not sell personal information, as defined in Nevada law, Nevada residents may email a request for no sale of their personal information to NevadaDesignatedRequest@pearson.com.

Supplemental Privacy Statement for California Residents


California residents should read our Supplemental privacy statement for California residents in conjunction with this Privacy Notice. The Supplemental privacy statement for California residents explains Pearson's commitment to comply with California law and applies to personal information of California residents collected in connection with this site and the Services.

Sharing and Disclosure


Pearson may disclose personal information, as follows:

  • As required by law.
  • With the consent of the individual (or their parent, if the individual is a minor)
  • In response to a subpoena, court order or legal process, to the extent permitted or required by law
  • To protect the security and safety of individuals, data, assets and systems, consistent with applicable law
  • In connection the sale, joint venture or other transfer of some or all of its company or assets, subject to the provisions of this Privacy Notice
  • To investigate or address actual or suspected fraud or other illegal activities
  • To exercise its legal rights, including enforcement of the Terms of Use for this site or another contract
  • To affiliated Pearson companies and other companies and organizations who perform work for Pearson and are obligated to protect the privacy of personal information consistent with this Privacy Notice
  • To a school, organization, company or government agency, where Pearson collects or processes the personal information in a school setting or on behalf of such organization, company or government agency.

Links


This web site contains links to other sites. Please be aware that we are not responsible for the privacy practices of such other sites. We encourage our users to be aware when they leave our site and to read the privacy statements of each and every web site that collects Personal Information. This privacy statement applies solely to information collected by this web site.

Requests and Contact


Please contact us about this Privacy Notice or if you have any requests or questions relating to the privacy of your personal information.

Changes to this Privacy Notice


We may revise this Privacy Notice through an updated posting. We will identify the effective date of the revision in the posting. Often, updates are made to provide greater clarity or to comply with changes in regulatory requirements. If the updates involve material changes to the collection, protection, use or disclosure of Personal Information, Pearson will provide notice of the change through a conspicuous notice on this site or other appropriate way. Continued use of the site after the effective date of a posted revision evidences acceptance. Please contact us if you have questions or concerns about the Privacy Notice or any objection to any revisions.

Last Update: November 17, 2020