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 | AL | CL | DL | BL | AH | CH | DH | BH | ||||
| r16 | AX | CX | DX | BX | SP | BP | SI | DI | ||||
| r32 | EAX | ECX | EDX | EBX | ESP | EBP | ESI | EDI | ||||
| 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 | [EAX] | DS | 00 | 000 | 00 | 08 | 10 | 18 | 20 | 28 | 30 | 38 |
| [ECX] | DS | 001 | 01 | 09 | 11 | 19 | 21 | 29 | 31 | 39 | ||
| [EDX] | DS | 010 | 02 | 0A | 12 | 1A | 22 | 2A | 32 | 3A | ||
| [EBX] | DS | 011 | 03 | 0B | 13 | 1B | 23 | 2B | 33 | 3B | ||
| [~SIB~] | DS/SS | 100 | 04 | 0C | 14 | 1C | 24 | 2C | 34 | 3C | ||
| disp32 | DS | 101 | 05 | 0D | 15 | 1D | 25 | 2D | 35 | 3D | ||
| [ESI] | DS | 110 | 06 | 0E | 16 | 1E | 26 | 2E | 36 | 3E | ||
| [EDI] | DS | 111 | 07 | 0F | 17 | 1F | 27 | 2F | 37 | 3F | ||
| [EAX]+disp8 | DS | 01 | 000 | 40 | 48 | 50 | 58 | 60 | 68 | 70 | 78 | |
| [ECX]+disp8 | DS | 001 | 41 | 49 | 51 | 59 | 61 | 69 | 71 | 79 | ||
| [EDX]+disp8 | DS | 010 | 42 | 4A | 52 | 5A | 62 | 6A | 72 | 7A | ||
| [EBX]+disp8 | DS | 011 | 43 | 4B | 53 | 5B | 63 | 6B | 73 | 7B | ||
| [~SIB~]+disp8 | DS/SS | 100 | 44 | 4C | 54 | 5C | 64 | 6C | 74 | 7C | ||
| [EBP]+disp8 | SS | 101 | 45 | 4D | 55 | 5D | 65 | 6D | 75 | 7D | ||
| [ESI]+disp8 | DS | 110 | 46 | 4E | 56 | 5E | 66 | 6E | 76 | 7E | ||
| [EDI]+disp8 | DS | 111 | 47 | 4F | 57 | 5F | 67 | 6F | 77 | 7F | ||
| [EAX]+disp32 | DS | 10 | 000 | 80 | 88 | 90 | 98 | A0 | A8 | B0 | B8 | |
| [ECX]+disp32 | DS | 001 | 81 | 89 | 91 | 99 | A1 | A9 | B1 | B9 | ||
| [EDX]+disp32 | DS | 010 | 82 | 8A | 92 | 9A | A2 | AA | B2 | BA | ||
| [EBX]+disp32 | DS | 011 | 83 | 8B | 93 | 9B | A3 | AB | B3 | BB | ||
| [~SIB~]+disp32 | DS/SS | 100 | 84 | 8C | 94 | 9C | A4 | AC | B4 | BC | ||
| [EBP]+disp32 | SS | 101 | 85 | 8D | 95 | 9D | A5 | AD | B5 | BD | ||
| [ESI]+disp32 | DS | 110 | 86 | 8E | 96 | 9E | A6 | AE | B6 | BE | ||
| [EDI]+disp32 | DS | 111 | 87 | 8F | 97 | 9F | A7 | AF | B7 | BF | ||
| Register Addressing Modes | EAX/AX/AL | — | 11 | 000 | C0 | C8 | D0 | D8 | E0 | E8 | F0 | F8 |
| ECX/CX/CL | — | 001 | C1 | C9 | D1 | D9 | E1 | E9 | F1 | F9 | ||
| EDX/DX/DL | — | 010 | C2 | CA | D2 | DA | E2 | EA | F2 | FA | ||
| EBX/BX/BL | — | 011 | C3 | CB | D3 | DB | E3 | EB | F3 | FB | ||
| ESP/SP/AH | — | 100 | C4 | CC | D4 | DC | E4 | EC | F4 | FC | ||
| EBP/BP/CH | — | 101 | C5 | CD | D5 | DD | E5 | ED | F5 | FD | ||
| ESI/SI/DH | — | 110 | C6 | CE | D6 | DE | E6 | EE | F6 | FE | ||
| EDI/DI/BH | — | 111 | C7 | CF | D7 | DF | E7 | EF | F7 | FF | ||
SIB Byte
| r32 | EAX | ECX | EDX | EBX | ESP | [--]* | ESI | EDI | ||
| Base | 000 | 001 | 010 | 011 | 100 | 101 | 110 | 111 | ||
| Effective Address | SS | Index | Value of SIB Byte | |||||||
|---|---|---|---|---|---|---|---|---|---|---|
| [EAX] | 00 | 000 | 00 | 01 | 02 | 03 | 04 | 05 | 06 | 07 |
| [ECX] | 001 | 08 | 09 | 0A | 0B | 0C | 0D | 0E | 0F | |
| [EDX] | 010 | 10 | 11 | 12 | 13 | 14 | 15 | 16 | 17 | |
| [EBX] | 011 | 18 | 19 | 1A | 1B | 1C | 1D | 1E | 1F | |
| None | 100 | 20 | 21 | 22 | 23 | 24 | 25 | 26 | 27 | |
| [EBP] | 101 | 28 | 29 | 2A | 2B | 2C | 2D | 2E | 2F | |
| [ESI] | 110 | 30 | 31 | 32 | 33 | 34 | 35 | 36 | 37 | |
| [EDI] | 111 | 38 | 39 | 3A | 3B | 3C | 3D | 3E | 3F | |
| [EAX * 2] | 01 | 000 | 40 | 41 | 42 | 43 | 44 | 45 | 46 | 47 |
| [ECX * 2] | 001 | 48 | 49 | 4A | 4B | 4C | 4D | 4E | 4F | |
| [EDX * 2] | 010 | 50 | 51 | 52 | 53 | 54 | 55 | 56 | 57 | |
| [EBX * 2] | 011 | 58 | 59 | 5A | 5B | 5C | 5D | 5E | 5F | |
| None*** | 100 | 60 | 61 | 62 | 63 | 64 | 65 | 66 | 67 | |
| [EBP * 2] | 101 | 68 | 69 | 6A | 6B | 6C | 6D | 6E | 6F | |
| [ESI * 2] | 110 | 70 | 71 | 72 | 73 | 74 | 75 | 76 | 77 | |
| [EDI * 2] | 111 | 78 | 79 | 7A | 7B | 7C | 7D | 7E | 7F | |
| [EAX * 4] | 10 | 000 | 80 | 81 | 82 | 83 | 84 | 85 | 86 | 87 |
| [ECX * 4] | 001 | 88 | 89 | 8A | 8B | 8C | 8D | 8E | 8F | |
| [EDX * 4] | 010 | 90 | 91 | 92 | 93 | 94 | 95 | 96 | 97 | |
| [EBX * 4] | 011 | 98 | 99 | 9A | 9B | 9C | 9D | 9E | 9F | |
| None*** | 100 | A0 | A1 | A2 | A3 | A4 | A5 | A6 | A7 | |
| [EBP * 4] | 101 | A8 | A9 | AA | AB | AC | AD | AE | AF | |
| [ESI * 4] | 110 | B0 | B1 | B2 | B3 | B4 | B5 | B6 | B7 | |
| [EDI * 4] | 111 | B8 | B9 | BA | BB | BC | BD | BE | BF | |
| [EAX * 8] | 11 | 000 | C0 | C1 | C2 | C3 | C4 | C5 | C6 | C7 |
| [ECX * 8] | 001 | C8 | C9 | CA | CB | CC | CD | CE | CF | |
| [EDX * 8] | 010 | D0 | D1 | D2 | D3 | D4 | D5 | D6 | D7 | |
| [EBX * 8] | 011 | D8 | D9 | DA | DB | DC | DD | DE | DF | |
| None*** | 100 | E0 | E1 | E2 | E3 | E4 | E5 | E6 | E7 | |
| [EBP * 8] | 101 | E8 | E9 | EA | EB | EC | ED | EE | EF | |
| [ESI * 8] | 110 | F0 | F1 | F2 | F3 | F4 | F5 | F6 | F7 | |
| [EDI * 8] | 111 | F8 | F9 | FA | FB | FC | FD | FE | FF | |
Note
*When
Baseis101, compute the base and index using the EBP Slot Table below.
EBP Slot Table
| Mod | Base | Scaled Index | Disp | |
|---|---|---|---|---|
00 | — | — | [Scaled Index] | disp32 |
01 | EBP | + | [Scaled Index] | disp8 |
10 | EBP | + | [Scaled Index] | disp32 |
11** | — | — | — | — |
Note
**A
Modvalue of11in the EBP slot table is impossible because it would not have indicated a SIB byte.
Note
***When the
Indexfield is100, indicating no index register, theSSfield must be00. IfIndexis100andSSis not00, the effective address is undefined.