The MOD-REG-R/M byte specifies instruction operands and their addressing mode(*):
The MOD field specifies x86 addressing mode:
The REG field specifies source or destination register:
The R/M field, combined with MOD, specifies either
the second operand in a two-operand instruction, or
the only operand in a single-operand instruction like NOT or NEG.
The d bit in the opcode determines which operand is the source, and which is the destination:
d=0: MOD R/M <- REG, REG is the source
d=1: REG <- MOD R/M, REG is the destination
___________
(*) Technically, registers do not have an address, but we apply the term addressing mode to registers nonetheless.