This appendix maps the addressing methods for memory load/save, jump table lookup, and call table lookup.
The same kind of memory reference that is used to access a memory table or array can also be used to access a jump vector. Almost any register can be used alone, in a pair addition, and with an optional base address and/or scale factor of {2, 4, or 8}, but you will note that there are some limitations in regard to the ESP register.
(Real Mode — Near or far is same opcodes)(Protected Mode — Near or far is same opcodes)
jmp . . . jmp NearAdrPtr[. . .]
eax | ebx | ecx | edx | esp | ebp | esi | edi |
ax | bx | cx | dx | sp | bp | si | di |
(Real Mode — Near or far is same opcodes)(Protected Mode — Near or far is same opcodes)
jmp word ptr [. . .] jmp dword ptr [. . .] jmp fword ptr [. . .] jmp NearAdrPtr[. . .]
eax | ebx | ecx | edx | esp | ebp | esi | edi |
eax+eax | eax+ebx | eax+ecx | eax+edx | eax+esp | eax+ebp | eax+esi | eax+edi |
ebx+eax | ebx+ebx | ebx+ecx | ebx+edx | ebx+esp | ebx+ebp | ebx+esi | ebx+edi |
ecx+eax | ecx+ebx | ecx+ecx | ecx+edx | ecx+esp | ecx+ebp | ecx+esi | ecx+edi |
edx+eax | edx+ebx | edx+ecx | edx+edx | edx+esp | edx+ebp | edx+esi | edx+edi |
esp+eax | esp+ebx | esp+ecx | esp+edx | - | esp+ebp | esp+esi | esp+edi |
ebp+eax | ebp+ebx | ebp+ecx | ebp+edx | ebp+esp | ebp+ebp | ebp+esi | ebp+edi |
esi+eax | esi+ebx | esi+ecx | esi+edx | esi+esp | esi+ebp | esi+esi | esi+edi |
edi+eax | edi+ebx | edi+ecx | edi+edx | edi+esp | edi+ebp | edi+esi | edi+edi |
eax*2 | ebx*2 | ecx*2 | edx*2 | - | ebp*2 | esi*2 | edi*2 |
eax+eax*2 | eax+ebx*2 | eax+ecx*2 | eax+edx*2 | - | eax+ebp*2 | eax+esi*2 | eax+edi*2 |
ebx+eax*2 | ebx+ebx*2 | ebx+ecx*2 | ebx+edx*2 | - | ebx+ebp*2 | ebx+esi*2 | ebx+edi*2 |
ecx+eax*2 | ecx+ebx*2 | ecx+ecx*2 | ecx+edx*2 | - | ecx+ebp*2 | ecx+esi*2 | ecx+edi*2 |
edx+eax*2 | edx+ebx*2 | edx+ecx*2 | edx+edx*2 | - | edx+ebp*2 | edx+esi*2 | edx+edi*2 |
esp+eax*2 | esp+ebx*2 | esp+ecx*2 | esp+edx*2 | - | esp+ebp*2 | esp+esi*2 | esp+edi*2 |
ebp+eax*2 | ebp+ebx*2 | ebp+ecx*2 | ebp+edx*2 | - | ebp+ebp*2 | ebp+esi*2 | ebp+edi*2 |
esi+eax*2 | esi+ebx*2 | esi+ecx*2 | esi+edx*2 | - | esi+ebp*2 | esi+esi*2 | esi+edi*2 |
edi+eax*2 | edi+ebx*2 | edi+ecx*2 | edi+edx*2 | - | edi+ebp*2 | edi+esi*2 | edi+edi*2 |
eax*4 | ebx*4 | ecx*4 | edx*4 | - | ebp*4 | esi*4 | edi*4 |
eax+eax*4 | eax+ebx*4 | eax+ecx*4 | eax+edx*4 | - | eax+ebp*4 | eax+esi*4 | eax+edi*4 |
ebx+eax*4 | ebx+ebx*4 | ebx+ecx*4 | ebx+edx*4 | - | ebx+ebp*4 | ebx+esi*4 | ebx+edi*4 |
ecx+eax*4 | ecx+ebx*4 | ecx+ecx*4 | ecx+edx*4 | - | ecx+ebp*4 | ecx+esi*4 | ecx+edi*4 |
edx+eax*4 | edx+ebx*4 | edx+ecx*4 | edx+edx*4 | - | edx+ebp*4 | edx+esi*4 | edx+edi*4 |
esp+eax*4 | esp+ebx*4 | esp+ecx*4 | esp+edx*4 | - | esp+ebp*4 | esp+esi*4 | esp+edi*4 |
ebp+eax*4 | ebp+ebx*4 | ebp+ecx*4 | ebp+edx*4 | - | ebp+ebp*4 | ebp+esi*4 | ebp+edi*4 |
esi+eax*4 | esi+ebx*4 | esi+ecx*4 | esi+edx*4 | - | esi+ebp*4 | esi+esi*4 | esi+edi*4 |
edi+eax*4 | edi+ebx*4 | edi+ecx*4 | edi+edx*4 | - | edi+ebp*4 | edi+esi*4 | edi+edi*4 |
eax*8 | ebx*8 | ecx*8 | edx*8 | - | ebp*8 | esi*8 | edi*8 |
eax+eax*8 | eax+ebx*8 | eax+ecx*8 | eax+edx*8 | - | eax+ebp*8 | eax+esi*8 | eax+edi*8 |
ebx+eax*8 | ebx+ebx*8 | ebx+ecx*8 | ebx+edx*8 | - | ebx+ebp*8 | ebx+esi*8 | ebx+edi*8 |
ecx+eax*8 | ecx+ebx*8 | ecx+ecx*8 | ecx+edx*8 | - | ecx+ebp*8 | ecx+esi*8 | ecx+edi*8 |
edx+eax*8 | edx+ebx*8 | edx+ecx*8 | edx+edx*8 | - | edx+ebp*8 | edx+esi*8 | edx+edi*8 |
esp+eax*8 | esp+ebx*8 | esp+ecx*8 | esp+edx*8 | - | esp+ebp*8 | esp+esi*8 | esp+edi*8 |
ebp+eax*8 | ebp+ebx*8 | ebp+ecx*8 | ebp+edx*8 | - | ebp+ebp*8 | ebp+esi*8 | ebp+edi*8 |
esi+eax*8 | esi+ebx*8 | esi+ecx*8 | esi+edx*8 | - | esi+ebp*8 | esi+esi*8 | esi+edi*8 |
edi+eax*8 | edi+ebx*8 | edi+ecx*8 | edi+edx*8 | - | edi+ebp*8 | edi+esi*8 | edi+edi*8 |