Adding to memory "ADD [SI],AX" uses the same microcode. A microcode subroutine gets the SI address and reads (R) from memory. Now M represents the memory value. The microcode adds, then falls through to write (W) the result to memory due to the writeback (WB) condition.
Each of the 8 addressing formulas has a short microcode subroutine to compute the effective address. The 8086's Translation ROM determines the appropriate 13-bit microcode address based on the ModR/M byte.