Keyboard shortcuts

Press or to navigate between chapters

Press S or / to search in the book

Press ? to show this help

Press Esc to hide this help

ModR/M Reference

16-Bit ModR/M

r8 AL CL DL BL AH CH DH BH
r16 AX CX DX BX SP BP SI DI
Ext 0 1 2 3 4 5 6 7
REG 000 001 010 011 100 101 110 111
Effective Address Base Mod R/M Value of ModR/M Byte
Memory Addressing Modes [BX+SI] DS 00 000 00 08 10 18 20 28 30 38
[BX+DI] DS 001 01 09 11 19 21 29 31 39
[BP+SI] SS 010 02 0A 12 1A 22 2A 32 3A
[BP+DI] SS 011 03 0B 13 1B 23 2B 33 3B
[SI] DS 100 04 0C 14 1C 24 2C 34 3C
[DI] DS 101 05 0D 15 1D 25 2D 35 3D
disp16 DS 110 06 0E 16 1E 26 2E 36 3E
[BX] DS 111 07 0F 17 1F 27 2F 37 3F
[BX+SI]+disp8 DS 01 000 40 48 50 58 60 68 70 78
[BX+DI]+disp8 DS 001 41 49 51 59 61 69 71 79
[BP+SI]+disp8 SS 010 42 4A 52 5A 62 6A 72 7A
[BP+DI]+disp8 SS 011 43 4B 53 5B 63 6B 73 7B
[SI]+disp8 DS 100 44 4C 54 5C 64 6C 74 7C
[DI]+disp8 DS 101 45 4D 55 5D 65 6D 75 7D
[BP]+disp8 SS 110 46 4E 56 5E 66 6E 76 7E
[BX]+disp8 DS 111 47 4F 57 5F 67 6F 77 7F
[BX+SI]+disp16 DS 10 000 80 88 90 98 A0 A8 B0 B8
[BX+DI]+disp16 DS 001 81 89 91 99 A1 A9 B1 B9
[BP+SI]+disp16 SS 010 82 8A 92 9A A2 AA B2 BA
[BP+DI]+disp16 SS 011 83 8B 93 9B A3 AB B3 BB
[SI]+disp16 DS 100 84 8C 94 9C A4 AC B4 BC
[DI]+disp16 DS 101 85 8D 95 9D A5 AD B5 BD
[BP]+disp16 SS 110 86 8E 96 9E A6 AE B6 BE
[BX]+disp16 DS 111 87 8F 97 9F A7 AF B7 BF
Register Addressing Modes AX/AL 11 000 C0 C8 D0 D8 E0 E8 F0 F8
CX/CL 001 C1 C9 D1 D9 E1 E9 F1 F9
DX/DL 010 C2 CA D2 DA E2 EA F2 FA
BX/BL 011 C3 CB D3 DB E3 EB F3 FB
SP/AH 100 C4 CC D4 DC E4 EC F4 FC
BP/CH 101 C5 CD D5 DD E5 ED F5 FD
SI/DH 110 C6 CE D6 DE E6 EE F6 FE
DI/BH 111 C7 CF D7 DF E7 EF F7 FF

32-Bit ModR/M

r8 ALCLDLBLAHCHDHBH
r16 AXCXDXBXSPBPSIDI
r32 EAXECXEDXEBXESPEBPESIEDI
Ext 01234567
REG 000001010011100101110111
Effective Address Base Mod R/M Value of ModR/M Byte
Memory Addressing Modes [EAX]DS00000 0008101820283038
[ECX]DS0010109111921293139
[EDX]DS010020A121A222A323A
[EBX]DS011030B131B232B333B
[~SIB~]DS/SS100040C141C242C343C
disp32DS101050D151D252D353D
[ESI]DS110060E161E262E363E
[EDI]DS111070F171F272F373F
[EAX]+disp8DS01000 4048505860687078
[ECX]+disp8DS0014149515961697179
[EDX]+disp8DS010424A525A626A727A
[EBX]+disp8DS011434B535B636B737B
[~SIB~]+disp8DS/SS100444C545C646C747C
[EBP]+disp8SS101454D555D656D757D
[ESI]+disp8DS110464E565E666E767E
[EDI]+disp8DS111474F575F676F777F
[EAX]+disp32DS10000 80889098A0A8B0B8
[ECX]+disp32DS00181899199A1A9B1B9
[EDX]+disp32DS010828A929AA2AAB2BA
[EBX]+disp32DS011838B939BA3ABB3BB
[~SIB~]+disp32DS/SS100848C949CA4ACB4BC
[EBP]+disp32SS101858D959DA5ADB5BD
[ESI]+disp32DS110868E969EA6AEB6BE
[EDI]+disp32DS111878F979FA7AFB7BF
Register Addressing Modes EAX/AX/AL11000 C0C8D0D8E0E8F0F8
ECX/CX/CL001C1C9D1D9E1E9F1F9
EDX/DX/DL010C2CAD2DAE2EAF2FA
EBX/BX/BL011C3CBD3DBE3EBF3FB
ESP/SP/AH100C4CCD4DCE4ECF4FC
EBP/BP/CH101C5CDD5DDE5EDF5FD
ESI/SI/DH110C6CED6DEE6EEF6FE
EDI/DI/BH111C7CFD7DFE7EFF7FF

SIB Byte

r32 EAXECXEDXEBXESP[--]*ESIEDI
Base 000001010011100101110111
Effective Address SS Index Value of SIB Byte
[EAX]000000001020304050607
[ECX]00108090A0B0C0D0E0F
[EDX]0101011121314151617
[EBX]01118191A1B1C1D1E1F
None1002021222324252627
[EBP]10128292A2B2C2D2E2F
[ESI]1103031323334353637
[EDI]11138393A3B3C3D3E3F
[EAX * 2]010004041424344454647
[ECX * 2]00148494A4B4C4D4E4F
[EDX * 2]0105051525354555657
[EBX * 2]01158595A5B5C5D5E5F
None***1006061626364656667
[EBP * 2]10168696A6B6C6D6E6F
[ESI * 2]1107071727374757677
[EDI * 2]11178797A7B7C7D7E7F
[EAX * 4]100008081828384858687
[ECX * 4]00188898A8B8C8D8E8F
[EDX * 4]0109091929394959697
[EBX * 4]01198999A9B9C9D9E9F
None***100A0A1A2A3A4A5A6A7
[EBP * 4]101A8A9AAABACADAEAF
[ESI * 4]110B0B1B2B3B4B5B6B7
[EDI * 4]111B8B9BABBBCBDBEBF
[EAX * 8]11000C0C1C2C3C4C5C6C7
[ECX * 8]001C8C9CACBCCCDCECF
[EDX * 8]010D0D1D2D3D4D5D6D7
[EBX * 8]011D8D9DADBDCDDDEDF
None***100E0E1E2E3E4E5E6E7
[EBP * 8]101E8E9EAEBECEDEEEF
[ESI * 8]110F0F1F2F3F4F5F6F7
[EDI * 8]111F8F9FAFBFCFDFEFF

Note

*When Base is 101, compute the base and index using the EBP Slot Table below.

EBP Slot Table

ModBaseScaled IndexDisp
00[Scaled Index]disp32
01EBP+[Scaled Index]disp8
10EBP+[Scaled Index]disp32
11**

Note

**A Mod value of 11 in the EBP slot table is impossible because it would not have indicated a SIB byte.

Note

***When the Index field is 100, indicating no index register, the SS field must be 00. If Index is 100 and SS is not 00, the effective address is undefined.