# z80:Opcodes:ADD

From Learn @ Cemetech

The values of the two operands are added together, and the result is written back to the first one.

## Contents

## Syntax

add a,op8 ;8 bits add op16,op16 ;16 bits

### Allowed instructions

add a,a add a,b add a,c add a,d add a,e add a,h add a,l add a,ixh add a,ixl add a,iyh add a,ixl add a,(hl) add a,(ix+n) add a,(iy+n) add a,n ;8-bit constant add hl,bc add hl,de add hl,hl add hl,sp add ix,bc add ix,de add ix,ix add ix,sp add iy,bc add iy,de add iy,iy add iy,sp

## Effects

### 8-bit arithmetic

N flag is reset, P/V is interpreted as overflow. Rest of the flags is modified by definition.

### 16-bit arithmetic

preserves the S, Z and P/V flags, and H is undefined. Rest of flags modified by definition.

## Uses

Obviously used to add two numbers together. However, you can add 16-bit numbers to sp, giving you control of where the stack pointer is pointing to.

## T-States

r denotes 8-bit register. rr represents a two byte register pair: BC, DE, HL, SP

r | 4 |

X | 7 |

(hl) | 7 |

(ix+X) | 19 |

(iy+X) | 19 |

hl, rr | 11 |

ix, rr | 15 |

iy, rr | 15 |

## See Also