Table B-1. ModRM Values

Table B-1. ModRM Values Rb = AL CL DL BL AH CH DH BH Rw = AX CX DX BX SP BP SI DI REG = 0 1 2 3 4 5 6 7 ModRM values Effective address 00 08 10 18 20 28 30 38 [BX + SI] 01 09 11 19 21 29 31 39 [BX + DI] 02 0A 12 1A 22 2A 32 3A [BP + SI] 03 0B 13 1B 23 2B 33 3B [BP + DI] mod=00 04 0C 14 1C 24 2C 34 3C [SI] 05 0D 15 1D 25 2D 35 3D [DI] 06 0E 16 1E 26 2E 36 3E D16 (simple var) 07 0F 17 1F 27 2F 37 3F [BX] 40 48 50 58 60 68 70 78 [BX + SI] + D8 D8 denotes an 8-bit displacement following the ModRM byte that is sign-extended and added to the index. 41 49 51 59 61 69 71 79 [BX + DI] + D8 42 4A 52 5A 62 6A 72 7A [BP + SI] + D8 43 4B 53 5B 63 6B 73 7B [BP + DI] + D8 mod=01 44 4C 54 5C 64 6C 74 7C [SI] + D8 45 4D 55 5D 65 6D 75 7D [DI] + D8 46 4E 56 5E 66 6E 76 7E [BP] + D8 Default segment register is SS for effective addresses containing a BP index; DS is for other memory effective addresses. 47 4F 57 5F 67 6F 77 7F [BX] + D8 80 88 90 98 A0 A8 B0 B8 [BX + SI] + D16 D16 denotes the 16-bit displacement following the ModRM byte that is added to the index. 81 89 91 99 A1 A9 B1 B9 [BX + DI] + D16 82 8A 92 9A A2 AA B2 BA [BP +SI] + D16 83 8B 93 9B A3 AB B3 BB [BP + DI] + D16 mod=10 84 8C 94 9C A4 AC B4 BC [SI] + D16 85 8D 95 9D A5 AD B5 BD [DI] + D16 86 8E 96 9E A6 AE B6 BE [BP] + D16 Default segment register is SS for effective addresses containing a BP index; DS is for other memory effective addresses. 87 8F 97 9F A7 AF B7 BF [BX] + D16 C0 C8 D0 D8 E0 E8 F0 F8 Ew=AX Eb=AL C1 C9 D1 D9 E1 E9 F1 F9 Ew=CX Eb=CL C2 CA D2 DA E2 EA F2 FA Ew=DX Eb=DL C3 CB D3 DB E3 EB F3 FB Ew=BX Eb=BL mod=11 C4 CC D4 DC E4 EC F4 FC Ew=SP Eb=AH C5 CD D5 DD E5 ED F5 FD Ew=BP Eb=CH C6 CE D6 DE E6 EE F6 FE Ew=SI Eb=DH C7 CF D7 DF E7 EF F7 FF Ew=DI Eb=BH

Table B-3. Hexadecimal Values for the Access Rights Byte

Table B-3. Hexadecimal Values for the Access Rights Byte Not present, Present, Descriptor Type privilege = privilege = 0 1 2 3 0 1 2 3 00 20 40 60 80 A0 C0 E0 Illegal 01 21 41 61 81 A1 C1 E1 Available Task State Segment 02 22 42 62 82 A2 C2 E2 Local Descriptor Table Segment 03 23 43 63 83 A3 C3 E3 Busy Task State Segment 04 24 44 64 84 A4 C4 E4 Call Gate 05 25 45 65 85 A5 C5 E5 Task Gate 06 26 46 66 86 A6 C6 E6 Interrupt Gate 07 27 47 67 87 A7 C7 E7 Trap Gate 08 28 48 68 88 A8 C8 E8 Illegal 09 29 49 69 89 A9 C9 E9 Illegal 0A 2A 4A 6A 8A AA CA EA Illegal 0B 2B 4B 6B 8B AB CB EB Illegal 0C 2C 4C 6C 8C AC CC EC Illegal 0D 2D 4D 6D 8D AD CD ED Illegal 0E 2E 4E 6E 8E AE CE EE Illegal 0F 2F 4F 6F 8F AF CF EF Illegal 10 30 50 70 90 B0 D0 F0 Expand-up , RO , Ignored Data Segment 11 31 51 71 91 B1 D1 F1 Expand-up , RO , Accessed Data Segment 12 32 52 72 92 B2 D2 F2 Expand-up , RW , Ignored Data Segment 13 33 53 73 93 B3 D3 F3 Expand-up , RW , Accessed Data Segment 14 34 54 74 94 B4 D4 F4 Expand-down, RO , Ignored Data Segment 15 35 55 75 95 B5 D5 F5 Expand-down, RO , Accessed Data Segment 16 36 56 76 96 B6 D6 F6 Expand-down, RW , Ignored Data Segment 17 37 57 77 97 B7 D7 F7 Expand-down, RW , Accessed Data Segment 18 38 58 78 98 B8 D8 F8 Non-conform, R- , Ignored Code Segment 19 39 59 79 99 B9 D9 F9 Non-conform, R- , Accessed Code Segment 1A 3A 5A 7A 9A BA DA FA Non-conform, R+ , Ignored Code Segment 1B 3B 5B 7B 9B BB DB FB Non-conform, R+ , Accessed Code Segment 1C 3C 5C 7C 9C BC DC FC Conforming , R- , Ignored Code Segment 1D 3D 5D 7D 9D BD DD FD Conforming , R- , Accessed Code Segment 1E 3E 5E 7E 9E BE DE FE Conforming , R+ , Ignored Code Segment 1F 3F 5F 7F 9F BF DF FF Conforming , R+ , Accessed Code Segment Figs

Table B-1. ModRM Values

Table B-1. ModRM Values Rb = AL CL DL BL AH CH DH BH Rw = AX CX DX BX SP BP SI DI REG = 0 1 2 3 4 5 6 7 ModRM values Effective address 00 08 10 18 20 28 30 38 [BX + SI] 01 09 11 19 21 29 31 39 [BX + DI] 02 0A 12 1A 22 2A 32 3A [BP + SI] 03 0B 13 1B 23 2B 33 3B [BP + DI] mod=00 04 0C 14 1C 24 2C 34 3C [SI] 05 0D 15 1D 25 2D 35 3D [DI] 06 0E 16 1E 26 2E 36 3E D16 (simple var) 07 0F 17 1F 27 2F 37 3F [BX] 40 48 50 58 60 68 70 78 [BX + SI] + D8 D8 denotes an 8-bit displacement following the ModRM byte that is sign-extended and added to the index. 41 49 51 59 61 69 71 79 [BX + DI] + D8 42 4A 52 5A 62 6A 72 7A [BP + SI] + D8 43 4B 53 5B 63 6B 73 7B [BP + DI] + D8 mod=01 44 4C 54 5C 64 6C 74 7C [SI] + D8 45 4D 55 5D 65 6D 75 7D [DI] + D8 46 4E 56 5E 66 6E 76 7E [BP] + D8 Default segment register is SS for effective addresses containing a BP index; DS is for other memory effective addresses. 47 4F 57 5F 67 6F 77 7F [BX] + D8 80 88 90 98 A0 A8 B0 B8 [BX + SI] + D16 D16 denotes the 16-bit displacement following the ModRM byte that is added to the index. 81 89 91 99 A1 A9 B1 B9 [BX + DI] + D16 82 8A 92 9A A2 AA B2 BA [BP +SI] + D16 83 8B 93 9B A3 AB B3 BB [BP + DI] + D16 mod=10 84 8C 94 9C A4 AC B4 BC [SI] + D16 85 8D 95 9D A5 AD B5 BD [DI] + D16 86 8E 96 9E A6 AE B6 BE [BP] + D16 Default segment register is SS for effective addresses containing a BP index; DS is for other memory effective addresses. 87 8F 97 9F A7 AF B7 BF [BX] + D16 C0 C8 D0 D8 E0 E8 F0 F8 Ew=AX Eb=AL C1 C9 D1 D9 E1 E9 F1 F9 Ew=CX Eb=CL C2 CA D2 DA E2 EA F2 FA Ew=DX Eb=DL C3 CB D3 DB E3 EB F3 FB Ew=BX Eb=BL mod=11 C4 CC D4 DC E4 EC F4 FC Ew=SP Eb=AH C5 CD D5 DD E5 ED F5 FD Ew=BP Eb=CH C6 CE D6 DE E6 EE F6 FE Ew=SI Eb=DH C7 CF D7 DF E7 EF F7 FF Ew=DI Eb=BH

Table B-3. Hexadecimal Values for the Access Rights Byte

Table B-3. Hexadecimal Values for the Access Rights Byte Not present, Present, Descriptor Type privilege = privilege = 0 1 2 3 0 1 2 3 00 20 40 60 80 A0 C0 E0 Illegal 01 21 41 61 81 A1 C1 E1 Available Task State Segment 02 22 42 62 82 A2 C2 E2 Local Descriptor Table Segment 03 23 43 63 83 A3 C3 E3 Busy Task State Segment 04 24 44 64 84 A4 C4 E4 Call Gate 05 25 45 65 85 A5 C5 E5 Task Gate 06 26 46 66 86 A6 C6 E6 Interrupt Gate 07 27 47 67 87 A7 C7 E7 Trap Gate 08 28 48 68 88 A8 C8 E8 Illegal 09 29 49 69 89 A9 C9 E9 Illegal 0A 2A 4A 6A 8A AA CA EA Illegal 0B 2B 4B 6B 8B AB CB EB Illegal 0C 2C 4C 6C 8C AC CC EC Illegal 0D 2D 4D 6D 8D AD CD ED Illegal 0E 2E 4E 6E 8E AE CE EE Illegal 0F 2F 4F 6F 8F AF CF EF Illegal 10 30 50 70 90 B0 D0 F0 Expand-up , RO , Ignored Data Segment 11 31 51 71 91 B1 D1 F1 Expand-up , RO , Accessed Data Segment 12 32 52 72 92 B2 D2 F2 Expand-up , RW , Ignored Data Segment 13 33 53 73 93 B3 D3 F3 Expand-up , RW , Accessed Data Segment 14 34 54 74 94 B4 D4 F4 Expand-down, RO , Ignored Data Segment 15 35 55 75 95 B5 D5 F5 Expand-down, RO , Accessed Data Segment 16 36 56 76 96 B6 D6 F6 Expand-down, RW , Ignored Data Segment 17 37 57 77 97 B7 D7 F7 Expand-down, RW , Accessed Data Segment 18 38 58 78 98 B8 D8 F8 Non-conform, R- , Ignored Code Segment 19 39 59 79 99 B9 D9 F9 Non-conform, R- , Accessed Code Segment 1A 3A 5A 7A 9A BA DA FA Non-conform, R+ , Ignored Code Segment 1B 3B 5B 7B 9B BB DB FB Non-conform, R+ , Accessed Code Segment 1C 3C 5C 7C 9C BC DC FC Conforming , R- , Ignored Code Segment 1D 3D 5D 7D 9D BD DD FD Conforming , R- , Accessed Code Segment 1E 3E 5E 7E 9E BE DE FE Conforming , R+ , Ignored Code Segment 1F 3F 5F 7F 9F BF DF FF Conforming , R+ , Accessed Code Segment Figures Table

Table B-1. ModRM Values

Table B-1. ModRM Values Rb = AL CL DL BL AH CH DH BH Rw = AX CX DX BX SP BP SI DI REG = 0 1 2 3 4 5 6 7 ModRM values Effective address 00 08 10 18 20 28 30 38 [BX + SI] 01 09 11 19 21 29 31 39 [BX + DI] 02 0A 12 1A 22 2A 32 3A [BP + SI] 03 0B 13 1B 23 2B 33 3B [BP + DI] mod=00 04 0C 14 1C 24 2C 34 3C [SI] 05 0D 15 1D 25 2D 35 3D [DI] 06 0E 16 1E 26 2E 36 3E D16 (simple var) 07 0F 17 1F 27 2F 37 3F [BX] 40 48 50 58 60 68 70 78 [BX + SI] + D8 D8 denotes an 8-bit displacement following the ModRM byte that is sign-extended and added to the index. 41 49 51 59 61 69 71 79 [BX + DI] + D8 42 4A 52 5A 62 6A 72 7A [BP + SI] + D8 43 4B 53 5B 63 6B 73 7B [BP + DI] + D8 mod=01 44 4C 54 5C 64 6C 74 7C [SI] + D8 45 4D 55 5D 65 6D 75 7D [DI] + D8 46 4E 56 5E 66 6E 76 7E [BP] + D8 Default segment register is SS for effective addresses containing a BP index; DS is for other memory effective addresses. 47 4F 57 5F 67 6F 77 7F [BX] + D8 80 88 90 98 A0 A8 B0 B8 [BX + SI] + D16 D16 denotes the 16-bit displacement following the ModRM byte that is added to the index. 81 89 91 99 A1 A9 B1 B9 [BX + DI] + D16 82 8A 92 9A A2 AA B2 BA [BP +SI] + D16 83 8B 93 9B A3 AB B3 BB [BP + DI] + D16 mod=10 84 8C 94 9C A4 AC B4 BC [SI] + D16 85 8D 95 9D A5 AD B5 BD [DI] + D16 86 8E 96 9E A6 AE B6 BE [BP] + D16 Default segment register is SS for effective addresses containing a BP index; DS is for other memory effective addresses. 87 8F 97 9F A7 AF B7 BF [BX] + D16 C0 C8 D0 D8 E0 E8 F0 F8 Ew=AX Eb=AL C1 C9 D1 D9 E1 E9 F1 F9 Ew=CX Eb=CL C2 CA D2 DA E2 EA F2 FA Ew=DX Eb=DL C3 CB D3 DB E3 EB F3 FB Ew=BX Eb=BL mod=11 C4 CC D4 DC E4 EC F4 FC Ew=SP Eb=AH C5 CD D5 DD E5 ED F5 FD Ew=BP Eb=CH C6 CE D6 DE E6 EE F6 FE Ew=SI Eb=DH C7 CF D7 DF E7 EF F7 FF Ew=DI Eb=BH

Table B-3. Hexadecimal Values for the Access Rights Byte

Table B-3. Hexadecimal Values for the Access Rights Byte Not present, Present, Descriptor Type privilege = privilege = 0 1 2 3 0 1 2 3 00 20 40 60 80 A0 C0 E0 Illegal 01 21 41 61 81 A1 C1 E1 Available Task State Segment 02 22 42 62 82 A2 C2 E2 Local Descriptor Table Segment 03 23 43 63 83 A3 C3 E3 Busy Task State Segment 04 24 44 64 84 A4 C4 E4 Call Gate 05 25 45 65 85 A5 C5 E5 Task Gate 06 26 46 66 86 A6 C6 E6 Interrupt Gate 07 27 47 67 87 A7 C7 E7 Trap Gate 08 28 48 68 88 A8 C8 E8 Illegal 09 29 49 69 89 A9 C9 E9 Illegal 0A 2A 4A 6A 8A AA CA EA Illegal 0B 2B 4B 6B 8B AB CB EB Illegal 0C 2C 4C 6C 8C AC CC EC Illegal 0D 2D 4D 6D 8D AD CD ED Illegal 0E 2E 4E 6E 8E AE CE EE Illegal 0F 2F 4F 6F 8F AF CF EF Illegal 10 30 50 70 90 B0 D0 F0 Expand-up , RO , Ignored Data Segment 11 31 51 71 91 B1 D1 F1 Expand-up , RO , Accessed Data Segment 12 32 52 72 92 B2 D2 F2 Expand-up , RW , Ignored Data Segment 13 33 53 73 93 B3 D3 F3 Expand-up , RW , Accessed Data Segment 14 34 54 74 94 B4 D4 F4 Expand-down, RO , Ignored Data Segment 15 35 55 75 95 B5 D5 F5 Expand-down, RO , Accessed Data Segment 16 36 56 76 96 B6 D6 F6 Expand-down, RW , Ignored Data Segment 17 37 57 77 97 B7 D7 F7 Expand-down, RW , Accessed Data Segment 18 38 58 78 98 B8 D8 F8 Non-conform, R- , Ignored Code Segment 19 39 59 79 99 B9 D9 F9 Non-conform, R- , Accessed Code Segment 1A 3A 5A 7A 9A BA DA FA Non-conform, R+ , Ignored Code Segment 1B 3B 5B 7B 9B BB DB FB Non-conform, R+ , Accessed Code Segment 1C 3C 5C 7C 9C BC DC FC Conforming , R- , Ignored Code Segment 1D 3D 5D 7D 9D BD DD FD Conforming , R- , Accessed Code Segment 1E 3E 5E 7E 9E BE DE FE Conforming , R+ , Ignored Code Segment 1F 3F 5F 7F 9F BF DF FF Conforming , R+ , Accessed Code Segment Figures Table

Table B-1. ModRM Values

Table B-1. ModRM Values Rb = AL CL DL BL AH CH DH BH Rw = AX CX DX BX SP BP SI DI REG = 0 1 2 3 4 5 6 7 ModRM values Effective address 00 08 10 18 20 28 30 38 [BX + SI] 01 09 11 19 21 29 31 39 [BX + DI] 02 0A 12 1A 22 2A 32 3A [BP + SI] 03 0B 13 1B 23 2B 33 3B [BP + DI] mod=00 04 0C 14 1C 24 2C 34 3C [SI] 05 0D 15 1D 25 2D 35 3D [DI] 06 0E 16 1E 26 2E 36 3E D16 (simple var) 07 0F 17 1F 27 2F 37 3F [BX] 40 48 50 58 60 68 70 78 [BX + SI] + D8 D8 denotes an 8-bit displacement following the ModRM byte that is sign-extended and added to the index. 41 49 51 59 61 69 71 79 [BX + DI] + D8 42 4A 52 5A 62 6A 72 7A [BP + SI] + D8 43 4B 53 5B 63 6B 73 7B [BP + DI] + D8 mod=01 44 4C 54 5C 64 6C 74 7C [SI] + D8 45 4D 55 5D 65 6D 75 7D [DI] + D8 46 4E 56 5E 66 6E 76 7E [BP] + D8 Default segment register is SS for effective addresses containing a BP index; DS is for other memory effective addresses. 47 4F 57 5F 67 6F 77 7F [BX] + D8 80 88 90 98 A0 A8 B0 B8 [BX + SI] + D16 D16 denotes the 16-bit displacement following the ModRM byte that is added to the index. 81 89 91 99 A1 A9 B1 B9 [BX + DI] + D16 82 8A 92 9A A2 AA B2 BA [BP +SI] + D16 83 8B 93 9B A3 AB B3 BB [BP + DI] + D16 mod=10 84 8C 94 9C A4 AC B4 BC [SI] + D16 85 8D 95 9D A5 AD B5 BD [DI] + D16 86 8E 96 9E A6 AE B6 BE [BP] + D16 Default segment register is SS for effective addresses containing a BP index; DS is for other memory effective addresses. 87 8F 97 9F A7 AF B7 BF [BX] + D16 C0 C8 D0 D8 E0 E8 F0 F8 Ew=AX Eb=AL C1 C9 D1 D9 E1 E9 F1 F9 Ew=CX Eb=CL C2 CA D2 DA E2 EA F2 FA Ew=DX Eb=DL C3 CB D3 DB E3 EB F3 FB Ew=BX Eb=BL mod=11 C4 CC D4 DC E4 EC F4 FC Ew=SP Eb=AH C5 CD D5 DD E5 ED F5 FD Ew=BP Eb=CH C6 CE D6 DE E6 EE F6 FE Ew=SI Eb=DH C7 CF D7 DF E7 EF F7 FF Ew=DI Eb=BH

Table B-3. Hexadecimal Values for the Access Rights Byte

Table B-3. Hexadecimal Values for the Access Rights Byte Not present, Present, Descriptor Type privilege = privilege = 0 1 2 3 0 1 2 3 00 20 40 60 80 A0 C0 E0 Illegal 01 21 41 61 81 A1 C1 E1 Available Task State Segment 02 22 42 62 82 A2 C2 E2 Local Descriptor Table Segment 03 23 43 63 83 A3 C3 E3 Busy Task State Segment 04 24 44 64 84 A4 C4 E4 Call Gate 05 25 45 65 85 A5 C5 E5 Task Gate 06 26 46 66 86 A6 C6 E6 Interrupt Gate 07 27 47 67 87 A7 C7 E7 Trap Gate 08 28 48 68 88 A8 C8 E8 Illegal 09 29 49 69 89 A9 C9 E9 Illegal 0A 2A 4A 6A 8A AA CA EA Illegal 0B 2B 4B 6B 8B AB CB EB Illegal 0C 2C 4C 6C 8C AC CC EC Illegal 0D 2D 4D 6D 8D AD CD ED Illegal 0E 2E 4E 6E 8E AE CE EE Illegal 0F 2F 4F 6F 8F AF CF EF Illegal 10 30 50 70 90 B0 D0 F0 Expand-up , RO , Ignored Data Segment 11 31 51 71 91 B1 D1 F1 Expand-up , RO , Accessed Data Segment 12 32 52 72 92 B2 D2 F2 Expand-up , RW , Ignored Data Segment 13 33 53 73 93 B3 D3 F3 Expand-up , RW , Accessed Data Segment 14 34 54 74 94 B4 D4 F4 Expand-down, RO , Ignored Data Segment 15 35 55 75 95 B5 D5 F5 Expand-down, RO , Accessed Data Segment 16 36 56 76 96 B6 D6 F6 Expand-down, RW , Ignored Data Segment 17 37 57 77 97 B7 D7 F7 Expand-down, RW , Accessed Data Segment 18 38 58 78 98 B8 D8 F8 Non-conform, R- , Ignored Code Segment 19 39 59 79 99 B9 D9 F9 Non-conform, R- , Accessed Code Segment 1A 3A 5A 7A 9A BA DA FA Non-conform, R+ , Ignored Code Segment 1B 3B 5B 7B 9B BB DB FB Non-conform, R+ , Accessed Code Segment 1C 3C 5C 7C 9C BC DC FC Conforming , R- , Ignored Code Segment 1D 3D 5D 7D 9D BD DD FD Conforming , R- , Accessed Code Segment 1E 3E 5E 7E 9E BE DE FE Conforming , R+ , Ignored Code Segment 1F 3F 5F 7F 9F BF DF FF Conforming , R+ , Accessed Code Segment