|
This HTML version of the public domain file intel.doc from the
PC Game Programmer's guide was produced by me, Zack Smith.
HTML modifications are therefore copyrighted
© 2005, 2009 by Zack Smith all rights reserved.
This information is provided in the hope that it will be useful,
but without any warranty. It is provided AS-IS,
without even the implied warranty of fitness for a particular purpose.
Intel 8086 Family Architecture
|
General Purpose Registers
|
| AH/AL AX (EAX) | Accumulator |
| BH/BL BX (EBX) | Base |
| CH/CL CX (ECX) | Counter |
| DH/DL DX (EDX) | Data |
(Exx) indicates 386+ 32 bit register
| Segment Registers
|
|---|
| CS | Code Segment
| | SS | Stack Segment
| | DS | Data Segment
| | ES | Extra Segment
| | (FS) | 386 and newer
| | (GS) | 386 and newer
|
| Pointer Registers | Stack Registers |
| SI (ESI) Source Index | SP (ESP) Stack Pointer |
| DI (EDI) Destination Index | BP (EBP) Base Pointer |
| IP Instruction Pointer |
|
|
Status Registers
| |
FLAGS | Status Flags
|
| Special Registers (386+ only)
| | CR0 | Control Register 0 | DR0 | Debug Register 0
| | CR2 | Control Register 2 | DR1 | Debug Register 1
| | CR3 | Control Register 3 | DR2 | Debug Register 2
| | | | DR3 | Debug Register 3
| | TR4 | Test Register 4 | DR6 | Debug Register 6
| | TR5 | Test Register 5 | DR7 | Debug Register 7
| | TR6 | Test Register 6
| | TR7 | Test Register 7
|
| Register | Default Segment | Valid Overrides
| | BP | SS | DS, ES, CS
| | SI or DI | DS | ES, SS, CS
| | DI strings | ES | None
| | SI strings | DS | ES, SS, CS
|
Instruction Clock Cycle Calculation
Some instructions require additional clock cycles due to a "Next
Instruction Component" identified by a "+m" in the instruction
clock cycle listings. This is due to the prefetch queue being
purge on a control transfers. Below is the general rule for
calculating "m":
- 88/86
- Not applicable
- 286
- "m" is the number of bytes in the next instruction
- 386
- "m" is the number of components in the next instruction (the instruction coding (each byte); plus the data and the displacement are all considered components)
8088/8086 Effective Address (EA) Calculation
|
Description | Clock Cycles
| |
Displacement | 6
| |
Base or Index (BX,BP,SI,DI) | 5
| |
Displacement+(Base or Index) | 9
| |
Base+Index (BP+DI,BX+SI) | 7
| |
Base+Index (BP+SI,BX+DI) | 8
| |
Base+Index+Displacement (BP+DI,BX+SI) | 11
| |
Base+Index+Displacement (BP+SI+disp,BX+DI+disp) | 12
|
-
add 4 cycles for word operands at odd addresses
-
add 2 cycles for segment override
-
80188/80186 timings differ from those of the 8088/8086/80286
Task State Calculation
"TS" is defined as switching from VM/486 or 80286 TSS to one of
the following:
| New Task
|
| Old Task | 486 TSS (VM=0) | 486 TSS (VM=1)
| 386 TSS (VM=0) | 386 TSS (VM=1) | 286 TSS
|
| 386 TSS (VM=0) | | | 309 | 226 | 282
|
| 386 TSS (VM=1) | | | 314 | 231 | 287
|
| 386 CPU/286 TSS | | | 307 | 224 | 280
|
| 486 CPU/286 TSS | 199 | 177 | | | 180
|
Miscellaneous
-
All timings are for best case and do not take into account wait
states, instruction alignment, the state of the prefetch queue,
DMA refresh cycles, cache hits/misses or exception processing.
-
To convert clocks to nanoseconds divide one microsecond by the
processor speed in MegaHertz:
(1000MHz/(n MHz)) = X nanoseconds
FLAGS - Intel 8086 Family Flags Register
| Bit # (in hex) | Acronym | Description |
| 0 | CF | Carry flag |
| 1 |
| 1 |
| 2 | PF | Parity |
| 3 |
| 0 |
| 4 | AF | Auxiliary flag |
| 5 |
| 0 |
| 6 | ZF | Zero flag |
| 7 | SF | Sign flag |
| 8 | TP | Trap flag (single step) |
| 9 | IF | Interrupt flag |
| A | DF | Direction flag |
| B | OF | Overflow flag |
| C/D | IOPL | IOPL I/O Privilege Level (286+ only) |
| E | NT | Nested Task Flag (286+ only) |
| F | 0 |
|
| 10 | RF | Resume Flag (386+ only) |
| 11 | VM | Virtual Mode Flag (386+ only) |
| 12 | AC | Alignment Check (486SX+ only) |
| 13 | VIF | Virtual Interrupt Flag (Pentium+) |
| 14 | VIP | Virtual Interrupt Pending (Pentium+) |
| 15 | ID | Indentification (Pentium+) |
MSW - Machine Status Word (286+ only)
| Bit # | Acronym | Description |
| 0 | PE | Protection Enable, switches processor between protected and real mode |
| 1 | MP | Math Present, controls function of the WAIT instruction |
| 2 | EM | Emulation, indicates whether coprocessor functions are to be emulated |
| 3 | TS | Task Switched, set and interrogated by coprocessor on task switches and when interpretting coprocessor instructions |
| 4 | ET | Extension Type, indicates type of coprocessor in system |
| 5-30 | Reserved |
|
| 31 | PG | Paging, indicates whether the processor uses page tables to translate linear addresses to physical addresses |
|