dest = dest + source
The add instruction adds the source value (second operand) to the destination (either a register or a memory location). The destination can be a 64, 32, 16 or 8 bit register or memory location. The source can be either a register, memory location or an immediate value. You can not use 2 memory addresses. You can add either 8, 16 or 32 bit immediate values to larger registers and the immediate value will be sign extended.
add rax, rdx ; add rdx to rax
add r8, 10 ; add 10 to r8
add r8, [x] ; add 64 bit value of x to r8
add r8d, [x] ; add 32 bit value of x to r8d
; top half of r8 will be set to 0
add r8w, [x] ; add 16 bit value of x to r8w
; top 3/4 of r8 will be unchanged
add [x], rax ; add rax to 64 bit variable x
add dword [x], 2 ; add 2 to 32 bit variable x
; must specify qword, dword, word or byte