![]()  | 
![]()  | 
![]()  | 
| 8-bit: | AL BL CL DL AH BH CH DH | 
| 16-bit: | AX BX CX DX SI DI BP SP | 
| 32-bit: | EAX EBX ECX EDX ESI EDI EBP ESP | 
| Segment: | CS DS ES SS FS GS | 
| 8087: | ST | 
| Control: | CRn | 
| Debug: | DRn | 
| Test: | TRn | 
Base + Index * Scale + Displacementwhere Base is any of the 32-bit registers, Index is any 32-bit register but not ESP, and Scale should be 1,2,4, or 8. Finally, the Displacement is a 32-bit integer quantity.
| [EAX+EBX] | ok | 
| [EAX+EAX] | ok, EAX is both base and index. | 
| [ESP] | ok, ESP is index, no base. | 
| [EDX*2] | ok, use this to index a global array of words. | 
| [EAX*4+EBP] | ok, use this to index a local array of longints. | 
| [SI] | ok, but is likely to lead to hard-to-find bugs. | 
| [ESI+BX] | illegal, mix of 16- and 32- bit registers. | 
| [SI*4] | illegal, 16-bit registers cannot be scaled. | 
| [ESP*4] | illegal, ESP cannot be an index. | 
 Please consult
Intel™ 80386 programmer's reference for more details.
![]()  | 
![]()  | 
![]()  | 
| Opcodes | Table of Content | Opcode Mnemonics |