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