Direct Address. The instruction has no ModR/M byte; the address of the operand is encoded in the instruction; and no base register, index register, or scaling factor can be applied (for example, far JMP (EA)).
The reg field of the ModR/M byte selects a control register (for example, MOV (0F20, 0F22)).
The reg field of the ModR/M byte selects a debug register (for example, MOV (0F21,0F23)).
A ModR/M byte follows the opcode and specifies the operand. The operand is either a general-purpose register or a memory address. If it is a memory address, the address is computed from a segment register and any of the following values: a base register, an index register, a scaling factor, a displacement.
EFLAGS Register.
The reg field of the ModR/M byte selects a general register (for example, AX (000)).
Immediate data. The operand value is encoded in subsequent bytes of the instruction.
The instruction contains a relative offset to be added to the instruction pointer register (for example, JMP (0E9), LOOP).
The ModR/M byte may refer only to memory (for example, BOUND, LES, LDS, LSS, LFS, LGS, CMPXCHG8B).
The instruction has no ModR/M byte; the offset of the operand is coded as a word or double word (depending on address size attribute) in the instruction. No base register, index register, or scaling factor can be applied (for example, MOV (A0–A3)).
The reg field of the ModR/M byte selects a packed quadword MMX™ technology register.
A ModR/M byte follows the opcode and specifies the operand. The operand is either an MMX™ technology register or a memory address. If it is a memory address, the address is computed from a segment register and any of the following values: a base register, an index register, a scaling factor, and a displacement.
The mod field of the ModR/M byte may refer only to a general register (for example, MOV (0F20-0F24, 0F26)).
The reg field of the ModR/M byte selects a segment register (for example, MOV (8C,8E)).
The reg field of the ModR/M byte selects a test register (for example, MOV (0F24,0F26)).
The reg field of the ModR/M byte selects a packed SIMD floating-point register.
An ModR/M byte follows the opcode and specifies the operand. The operand is either a SIMD floating-point register or a memory address. If it is a memory address, the address is computed from a segment register and any of the following values: a base register, an index register, a scaling factor, and a displacement
Memory addressed by the DS:SI register pair (for example, MOVS, CMPS, OUTS, or LODS).
Memory addressed by the ES:DI register pair (for example, MOVS, CMPS, INS, STOS, or SCAS).
- Source - [3] p.A-1
If segment is not specified, as almost always, it is assumed to be ds, unless base register is esp or ebp; in this case, the address is assumed to be relative to ss
https://en.wikibooks.org/wiki/X86_Assembly/GAS_Syntax#cite_note-1