Page
 ··PRICEIN
Order Number Dollars
 Infef
Call Toll Free 800 548-4725for phone orders
 Customer Support
 80287 Programmers Reference Manual
 @INTELCORPORATION
 Preface
Organization of this Manual
Page
 Table of Contents
 Real Address Mode
Extended Instruction SET
 Table of Contents
Chapter Memory Management and Virtual Addressing
 10-1
10-3
10-4
10-5
 Flag Word Contents
80286/80287 Supported Data Types
 Code and Data Segments Assigned to a Privilege Level
Dynamic Segment Relocation and Expansion of Segment Limit
 Reserved Exceptions and Interrupts
 Inter
 Introduction to
Page
 Chapter Introduction to
 Modes of Operation
Advanced Features
Memory Management
 Task Management
Protection Mechanisms
 Support for Operating Systems
Organization of this Book
 Related Publications
 Inter
 Base Architecture
Page
 Chapter Base Architecture
Memory Organization and Segmentation
 8000 r
 Bytes and Words in Memory
 Ascii
 Base Architecture
·3 /80287 Supported Data Types
 Base Architecture
 Registers
General Registers
 Memory Segmentation and Segment Registers
 Real Address Mode Segment Selector Interpretation
Index, Pointer, and Base Registers
 Inlel
 Inter
 Stack Operation
 BP Usage as a Stack Frame Base Pointer
 Status and Control Registers
Implied Segment Usage by Index, Pointer, and Base Registers
 10. Flags Register
 Addressing Modes
Operands
 Register and Immediate Modes
Memory Addressing Modes
 Segment Selection
 EASE Architecture Segment Register Selection Rules
Offset Computation
 PRog~~~D
 Memory Operand AddressingModes
INPUT/OUTPUT
BX, 51
 13. Complex Addressing Modes
 AL,FE
OUT
OUT FF,AL
 Interrupts and Exceptions
 Hierarchy of Instruction Sets
 Interrupt Vector Assignments Real Address Mode
 80186~80188
Page
 Basic Instruction Set
Page
 Data Movement Instructions
General-Purpose Data Movement Instructions
 Stack Manipulation Instructions
Push
 Basic Instruction SET
 Flag Operation with the Basic Instruction SET
Status Flags
Control Flags
Hm====i
 Arithmetic Instructions
Previous Push Instructions LOW Address After Before Popa
 Basic Instruction SET
 Addition Instructions
Subtraction Instructions
 Multiplication Instructions
 Logical Instructions
Division Instructions
Boolean Operation Instructions
 Shift and Rotate Instructions
Wordoprnd
 ~-i
 01, I, I aI a1,1, I, I, I a1,1,1, I aI alaiI
 10 01, ,1,101, 0101,1, 01 0 10
 I 1I 1I 0 1I 1 1I o I o I 1 o I 1I 1111010rrG
 Ll 1 1 1 l 1
 Test and Compare Instructions
Type Conversion and No-Operation Instructions
Control Transfer Instructions
 Unconditional Transfer Instructions
 Call Instruction
 Conditional Transfer Instructions
 JG/JNLE
JGE/JNL
JL/JNGE
JLE/JNG
 Software-Generated Interrupts
 Translate Instruction
Character Translation and String Instructions
String Manipulation Instructions and Repeat Prefixes
 String Movement Instructions
 Address Manipulation Instructions
 Intel
Flag Control Instructions
 Flag Transfer Instructions
 Unpacked BCD Adjustment Instructions
Packed BCD Adjustment Instructions
BINARY-CODED Decimal Arithmetic Instructions
 Trusted and Privileged Restrictions on Popf and Iret
Trusted Instructions
Machine State Instructions
 Input and Output Instructions
Processor Extension Instructions
 Processor Extension Synchronization Instructions
Numeric Data Processor Instructions
 Basic Instruction SET Data Transfer Instructions
Page
 Extended Instruction Set
Page
 Chapter Extended Instruction SET
Block 1/0 Instructions
 HIGH-LEVEL Instructions
 Formal Definition of the Enter Instruction
 Variable Access in Nested Procedures
Extended Instruction SET
 2b. Stack Frame for Procedure a
 2d. Stack Frame for Procedure C at Level 3 Called from B
 Extended Instruction SET
Page
 Real Address Mode
Page
 Chapter Real Address Mode
Addressing and Segmentation
 Real Address Mode
 Real Address Mode
Overlapping Segments to Save Physical Memory
 NMI
Interrupt Priorities
Intr
 Interrupt Procedures
Reserved and Dedicated Interrupt Vectors
 ESC
 Processor State after Reset
System Initialization
Flags
MSW Fffoh
 Real Address Mode
 ·Memory Management Virtual Addressing
Page
 Chapter Memory Management and Virtual Addressing
Memory Management Overview
 Virtual Addresses
Format of the Segment Selector Component
 Address Spaces and Task Isolation
 Descriptor Tables
 PiDPll~1
 PIDPLI~1
VIRTUAL-TO-PHYSICAL Address Translation
 Segments and Segment Descriptors
LOT Descriptor
 Virtual-to-Physical Address Translation
 Memory Management Registers
Segment Address Translation Registers
 ~,m~
 =--=--=1~~
 System Address Registers
 Memory Management and Virtual Addressing
Page
 Protection7
Page
 Chapter Protection
 Protection Implementation
 Addressing Segments of a Module within a Task
 Protection
Descriptor Cache Registers
 LOT and GOT Access Checks
Separation of Address Spaces
 LJol
 LIT
 Example of Using Four Privilege Levels
Privilege Levels and Protection
 Privilege Usage
 Segment Descriptor
 DPL
~~~/do I I LJ. ITI~~
 Data Accesses
 Code Segment Access
Data Access Restriction by Privilege Level
 Pointer Privilege Stamping via Arpl
 Control Transfers
NTE R
 Gates
 10. Gate Descriptor Format Call Gates
 Call Gate Checks
INTRA-LEVEL Transfers VIA Call Gate
Se!eC!0r j ,,It Niiii
 INTER-LEVEL Control Transfer VIA Call Gates
 Protection Stack Changes Caused by Call Gates
 12. Stack Contents after an Inter-Level Call
 Inter-Level Return Checks
 Tasks and State Transitions
Page
 Introduction
Task State Segments and Descriptors
 Tasks and State Transitions
Task State Segment and TSS Registers
 Task State Segment Descriptors
 Task Switching
I01
 Tasks and State Transitions
 Checks Made during a Task Switch
 Task Linking
CALL/INT Iret
 Task Gates
Task Gate Descriptor
 ~ASK
Page
 Interrupts and Exceptions
Page
 Interrupt Descriptor Table
Interrupt Descriptor Table Definition
 Hardware Initiated Interrupts
An eve.! eXtern8~.~~t~~pr~~~~~1
 Software Initiated Interrupts
Interrupt Gates and Trap Gates
 Trap/Interrupt Gate Descriptors
 SSFROMTSS--~.~r~------~l
 Interrupts and Exceptions
Trap and Interrupt Gate Checks
 Infer
Interrupt and Gate Interactions
 Scheduling Considerations
Deciding Between Task, Trap, and Interrupt Gates
 Protection Exceptions and Reserved Vectors
 Invalid OP-Code Interrupt
Double Fault Interrupt
Processor Extension Segment Overrun Interrupt
 Invalid Task State Segment Interrupt
Not Present Interrupt
 Stack Fault Interrupt
Conditions That Invalidate the TSS
 General Protection Fault Interrupt
Additional Exceptions and Interrupts
 Single Step Interrupt Interrupt
IDT
 System Control Initialization
Page
 Chapter System Control and Initialization
Descriptor Table Registers.·
 System Control and Initialization
Local and Global Descriptor Table Definition
 System Control Instructions
 Machine Status Word
MSW Bit Functions
 Wait
ESC
IfTS=1
 Initialization
03FFH
 Real Address Mode
 10-8
 Advanced Topics
Page
 Special Segment Attributes
Virtual Memory Management
Conforming Code Segments
 Expand-Down Data Segments
Expand-Down Segment
 Pointer Validation
Dynamic Segment Relocation and Expansion of Segment limit
 Pointer Integrity RPL and the Trojan Horse Problem
Descriptor Validation
 NPX Context Switching
Multiprocessor Considerations
 Example of NPX Context Switching
Advanced Topics
 Shutdown
Page
 Appendix System Initialization
Page
 Appendix a System Initialization
 System Initialization
 System .INITIALIZATION
 System Initialization
 Ax,.x
 Intel·
 Mov!w
 MovSiW
 AX,cl
Page
 Appendix 80286 Instruction Set
Page
 Appendix B 80286 Instruction SET
 80286 Instruction SET
Figure B-1. In Instruction Byte Format
 Rb = Rw =
REG =
Mod=OO Mod=01 Mod=10 Mod=11
BX + D8 SI +
 80286 U\lSTRUCTION SET
Figure B-2 Ir Instruction Byte Format
 Instruction
 Description
Clocks
Flags Modified
 Protected Mode Exceptions
Real Address Mode Exceptions
Error Codes
Flags Undefined
 #UD
#NM
#DF
#MP
 #MF 16 Math Fault No Error Code
#GP 13 General Protection Selector or Zero Error Code
#MP 9 Math Unit Protection Fault No Error Code
 #NM 7 No Math Unit Available No Error Code
#NP 11 Not Present Selector Error Code
 #SS 12 Stack Fault Selector or Zero Error Code
#TS 10 Invalid Task State Segment Selector Error Code
 Privilege Level and Task Switching on
#UD 6 Undefined Opcode No Error Code
Switchtasks
 80286 Instruction SET
 80286 Instruction SET
 AAA Ascii Adjust AL After Addition
 AAD Ascii Adjust AX Before Division
AAO
 D4 OA
AAM
 AAS-ASCII Adjust AL After Subtraction
AAS
 ADC
ADC/ ADD-Integer Addition
ADD
 AND-Logical
 ARPL- Adjust RPL Field of Selector
 BOUND-Check Array Index Against Bounds
Bound rw,md noj=13
 Flags Modified
Flags Undefined
Operation
Call
 Call FAR
Call Conforming Code Segment
Call Nonconforming Code Segment
Call to Call Gate
 Protected Mode Exceptions
80286 Instruction SET Call Gate to More Privilege
Call Gate to Same Privilege
Call Task Gate
 Interrupt l3 for a word operand at offset Offffh
 Caw-Convert Byte into Word
C8W
 CLC-Clear Carry Flag
CLC
 CLD-Clear Direction Flag
CLO
 Protected Mode Exceptions
Real Address Mode Exceptions
Ell-Clear Interrupt Flag
80286·INSTRUCTION SET
 CLTS-Clear Task Switched Flag
Opcode Instruction ClocksDescription
 CMC-Complement Carry Flag
CMC
 CMP-Compare Two Operands
CMP
 CMPS8
Cmpsw
 CWO-Convert Word to Doubleword
CWD
 DAA-Decimal Adjust AL After Addition
DAA
 DAS-Decimal Adjust AL After Subtraction
 DEC-Decrement by
Opcode Structlon Clocks Description
 DIVeb
DIV -Unsigned Divide
DIVew
 ENTER-Make Stack Frame for Procedure Parameters
BP= Frameptr
 80286 Instruction SET Protected Mode Exceptions
 HLT-Halt
 IDIV-Signed Divide
 IMUL-Signed Multiply
Opcode Instruction Clocks Description Imul eb
21,mem=24 Signed multiply rw =
21,mem=24 Signed multiply rw = EA word X imm. byte
 IN-Input from Port
 INC
Mem=7 Increment EA word by
 INS/INSB/INSW-Input from Port to String
INS
Insb
Insw
 INT IINTO-Call to Interrupt Procedure
INT3
 Interrupt to Inner Privilege
Interrupt
Interrupt to Same Privilege Level
 #GP, #NP, #SS, and #TS, as indicated in the list above
 IRET-Interrupt Return
Opcode Instruction Clock Description
Iret
Interrupt Return
 Interrupt Return on Stack
Interrupt Return to Same Level
 #GP, #NP, or #88, as indicated in the above listing
 JAE
JBE
JGE
JLE
 80286 Instruction SET
 JMP-Jump
 Jump FAR
Jump Conforming Code Segment
Jump Nonconforming Code Segment
Jump to Call Gate
 Jump Task State Segment
 LAHF-load Flags into AH Register
Lahf
 14,mem=16 Load highrw= Access Rights byte, selector ew
Real Address Mode Exception
Instruction SET
02 Ir
 LDS
LOS/ LES-Load Doubleword Pointer
LES
 80286 Instruction SET Protected Mode Exceptions
 LEA-load
Effective Address Offset
 LEAVE-HighLevel Procedure Exit
Leave
 LGDTILIDT-Load Global/Interrupt Descriptor Table Register
Lgdt
Load m into Global Descriptor Table reg
LlDT
 LLDT-Load Local Descriptor Table Register
Lldt ew
Load selector ew into Local Descriptor Table
Register
 LMSW-Load Machine Status Word
01 /6 LMSWew Mem=6
 LOCK-AssertBUS Lock Signal
Lock
 LODS8
Lods
Lodsw
 LOOP/LOOPcond-Loop Control with CX Counter
 LSL-LoadSegment Limit
14,mem=16 Load rw = Segment Limit, selector ew
 LTR-Load Task Register
00 /3 LTR ew 17,mem=19
 Opcode Instruction Clocks Description
Mem=3 Move byte register into EA byte
Mem=3 Move word register into EA word
Mem=5 Move EA byte into byte register
 Interrupt 13 for a word operand at offset Offffh
 MOVS/MOVSB/MOVSW-Move Data from String to String
Movs
MOVS8
Movsw
 MUL-Unsigned Multiplication of AL or AX
 NEG eb
NEG-TwosComplement Negation
NEG ew
 NOP-No Operation
 NOT-OnesComplement Negation
Not
 OR- Logical Inclusive or
 OUT OX,AL
Output byte AL to port number OX
OUT OX,AX
Output word AX to port number OX
 Outsb
Outs
Outsw
 POP
POP SS
 Inter
 FlAGS Undefined
Popa
 POPF-Pop from Stack into the Flags Register
Popf
 PUSH-Push a Word onto the Stack
Push
Push CS
Push SS
 PUSHA-Push All General Registers
 Push flag~ register
PUSHF-Push Flags Register onto the Stack
Pushf
 RCL
RCR
ROL
ROR
 Interrupt 13 for a word operand at offset Offffh
 REP INS
REP Insb
REP Insw
REP Movs
 80286 Instruction SET
 RET -Return from Procedure
RET
 Return to Same Level
Return to Outer Privilege Level
 Sahf -Store AH into Flags
Sahf
 SAR
SAL
SHR
 Interrupt 13 for a word operand at offset Offffh
 SBB-Integer Subtraction With Borrow
SBB
 SCAS/SCASB/SCASW-Compare String Data
 Sgdt /SIDT-Store Global/Interrupt Descriptor Table Register
101
 SLOT-Store Local Descriptor Table Register
 Smsw -Store Machine Status Word
103
 STe-SetCarry Flag
104
 STOSetDirection Flag
STO
 STI-Set Interrupt Enable Flag
STI
 Stoss
Stosw
 00 /1 STR ew Mem=3
STR-Store Task Register
108
 SUB-Integer Subtraction
SUB
 TEST-Logical Compare
Test
 VERR,VERW-Verifya Segment for Reading or Writing
14,mem=16 Set ZF=1 if seg. can be read, selector ew
14,mem=16
111
 112
 WAIT-Wait Until Busy Pin Is Inactive High
Wait
 XCHG- Exchange Memory/Register with Register
Xchg
 Xlat -Table Look-up Translation
Xlat mb Set AL to memory byte Osbx + unsigned
Xlatb
115
 XOR-Logical Exclusive or
XOR
 Appendix 8086/8088 Compatibility Considerations
Page
 Software Compatibility Considerations
Table C-1. New 80286 Interrupts
 Pushbp MOVBP,SP XCHGBP,BP
 Hardware Compatibility Considerations
Page
 80286/80386 Software
Page
 80286/80386 Softvvare
 80286/80386 Software Compatibility Considerations
 Index
Index-1
 Index-2
 Index-3
 LODS/LODSB/LODSW, 3-24, B-69
Index-4
 Index-5
 Index-6
 Numeric Processor Extension NPX
Page
 AN Introduction to
80286 Microsystem
 Organization of This Manual
Related Publications
 Chapter Overview of Numeric Processing
Unnormals-Descendents of Denormal Operands
 Chapter SYSTEM-LEVEL Numeric Programming
 Glossary of 80287 and FLOATING-POINT Terminology Index
80287
 Tables
Storage Allocation Directives
 Overview of Numeric Processing
Page
 Introduction to the 80287 Numeric Processor Extension
Performance
 Overview of Numeric Processing
Fxam StackO assumed Examine
 Applications
± Vb2 4ac
 Upgradability
 Programming Interface
PASCAL-286 FORTRAN-286
 Hardware Interface
Numeric Data Types
 ~r=~=~
 Numeric Processor Architecture
NPX Register Stack
 NPX Status Word
80287 Register Set
 Control Word
Status Word
 Infinity, positive
 Inter
 Tag Word Format
 Computation Fundamentals
Number System
 Data Types and Formats
Number System
 Data Formats
 Binary Integers
 Rounding Control
 Precision Control
·6. Rounding Modes
 Special Computational Situations
Special Numeric Values
 Nonnormal Real Numbers
 Denormalization Process
Overview of Numeric Processing
 Unnormals-Descendents of Denormal Operands
 Frndint
Fsqrt
FIST, FISTP, Fbstp
FLD
 Infinity
 FLD, FBLD1 FILD2 FST,FSTP
Fbstp FIST, Fistp
Fprem
Fsqrt
 +co
 Fxtract
Frndint
Ftst
 Largest
Smallest
Zero Smallest
......1 ---- 15 bits-----l..~1
 U U2
Zero
U U
 Bits
 Class NaNs
16. Temporary Real Encodings Sign Biased Exponent
Significand·
Normals
 Invalid Operation
16. Temporary Real Encodings Contd
Zero Divisor
 Overview of Numeric Processing Denormalized Operand
 17. Exception Conditions and Masked Responses
 17. Exception Conditions and Masked Responses Contd
Masked response to overflow exception earlier
 11. Arithmetic Example Using Infinity
 Software Exception Handling
 Programming Numeric Applications
Page
 Compatibility with the 8087 NPX
80287 NPX Instruction SET
Numeric Operands
 FAD D destination, source
Data Transfer Instructions
 Programming Numeric Applications
 Arithmetic Instructions
 Arithmetic Instructions
 Fadd
Fsub
Fmulp
Fdiv Azimuth
 Fsubrp / /destination/source
 Fprem
 Condition Code Interpretation after Fprem
 Programming Numeric Applications Fabs
Fcom / /source
Comparison Instructions
Condition Code Interpretation after Fcom
 Fcompp
Fxam
 Fptan
STO 1r
 Fpatan
F2XM1
FYL2X
FYL2XP1
 Constant Instructions
 Processor Control Instructions
 Finitifninit
 Fstsw AX/FNSTSW AX
 FSAVE/FRSTOR Memory Layout
 Fstenvifldenv Memory Layout
 Ffree destination
 Programming Numeric Applications
12. Key to Operand Types
Instruction Execution Time
 13. Execution Penalties
 Instruction Length
 ·14. Instruction Set Reference Data
 14. Instruction Set Reference Data Contd
 Programming Numeric Applications Fdecstp
Fdiv
Fdivp
Fdivr
 Ffree ST1
Fiadd DISTANCE..TRAVELLED Fiadd Pulsecount SI
Ficom TOOL.NPASSES
Ficom BP+4.PARMCOUNT
 Fidivr Frequency
Fild Standoff DI
Fild RESPONSE.COUNT
Fimul Bearing
 Fist OBS.COUNTSI
Fist BP.FACTOREDPULSES
Fistp BX.ALPHACOUNT SI
Fistp Correctedtime
 FLD Reading 81.PRE88URE
FLO 8AVEREADING
Fldcw Controlword
FLDLG2
 FLOL2E
FLOL2T
Flopi
Floz
 Fmulp ST1,ST
Fmul Speedfactor
Fpatan
 ·14. Instruction Set Reference Data Contd
Fptan
Frstor BP
Fsave BP
 FST ST3
FST Correlation
FST Meanreading
Fstcw Savecontrol
 Fstp BX.ADJUSTEDRPM
Fstp ST2
Fstp Totaldosage
Fstp Regsave SI
 Fsubr ST,ST1
Fsubr Vectorsi
Fsubr BX.INDEX
Fsubrp ST1,ST
 FYL2X
Fxch ST2
FYL2XP1
 Programming Facilities
High-Level Languages
 15. PLlM-286 Built-In Procedures
 ASM286
Interpretation Data Types
 BIT String Shorti Nteger OFFFFFF82H HEX Must Start
 TR E Q
Status Word Record Definition
 17. Addressing Mode Examples
Fiaooalpha FOIVRALPHA.BETA
Fsub Alpha SI
Filo BP.BETA
 It *it
Sample PL/M-286 Program
 Emulation
Concurrent Processing with
 Intel Programming Numeric Applications
·7. Sample ASM286 Program
 Sample ASM286 Program Contd
 Managing Concurrency
Instruction Synchronization
 Data Synchronization
 Error Synchronization
Synchronizing References to Shared Data
 MOV
 Fsgrt
 System-Level Numeric Programming
Page
 Architecture
Real-Address Mode and Protected Virtual-Address Mode
Processor Extension Data Channel
 Dedicated and Reserved 1/0 Locations
Processor Initialization and Control
System Initialization
Recognizing. the 80287 NPX
 SYSTEM-LEVEL Numeric Programming
Software Routine to Recognize
 Configuring the Numerics Environment
 Initializing
NPX Processor State Following Initialization
 Inter
Handling Numeric Processing Exceptions
 Simultaneous Exception Response
 Precedence of NPX Exceptions
 Numeric Programming Examples
Page
 Chapter Numeric Programming Examples
 Jump Table for Examine Routine
XAM
 Numeric Programming Examples
Conditional Branching for Fxam Contd
 Proc
 MOV Byte PTR IBP-121, OH Fldenv
 Fnsave BP-941
 FLOATING-POINT to Ascii Conversion Examples
 It116
 Ebde
 DoeF
 \ii.t
 4BB
 Lei
 Function. Partitioning
 Special Instructions
Exception Considerations
Description of Operation
 Scaling the Value
 Output Format
Trigonometric Calculation Examples
 Calculating Trigonometric Functions
Numeric Programming Examples
 207
 Arg
 0o,3
 Coce
 4676
Page
 Machine Instruction Encoding and Decoding
Page
 OP-A MOD OP-S Displacement Format OP-AMOD
REG
 Machine Instruction Encoding and Decoding
Table A·2. Machine Instruction Decodin.9 Guide
 Machine Instruction Encoding and Decoding
Modoo
MOD01
MOD10
 Table A-2. Machine Instruction Decoding Guide Contd
 1REG
Oreg
Fstswax
XXX
Page
 Appendix Compatibility Between NPX
Page
 Appendix B Compatibility Between
80287 NPX
 NI NIT
 Appendixc·
Page
 Appendix C Implementing the Ieee P754 Standard
 Additional Software to Meet the Standard
 Implementing the Ieee P754 Standard
Page
 Glossary of 80287 and Floating-Point Terminology
Page
 Glossary FLOATING-POINT Terminology
Glossary-1
 Inter Glossary of 80287 and FLOATING-POINT Terminology
 Glossary of 80287 and FLOATING-POINT Terminology
Glossary-3
 Glossary-4
 Glossary of 80287 and FLOATING-POINT Terminology
Page
 Index
 Index-2
 NO-WAIT Form
 Index-4
 Inter
 Inter
 IntJ
 European Sales Offices