Skip to content

Logical Instructions


Mnemonic Description
and logical AND
andi logical AND with immediate (with constant)
or logical OR
ori logical OR with immediate
eor exclusive OR (ya da)
com one's complement
neg two's complement

::and || andi & or || ori & eor

ANDOR EOR
pq`or p, q`p q`or p, q`pq `eor p, q`
1111 1111 0
1001 0110 1
0100 1101 1
0000 0000 0


ldi   r16, 0b01010101   ; load 0x55 to r16
andi  r16, 0b00001111
;resultat r16:0b00000101

ldi   r16, 0b01010101   ; load 0x55 to r16
ori   r16, 0b00001111
;resultat r16:0b01011111

ldi   r16, 0b01010101
ldi   r17, 0b11111111
eor   r16, r17
; r17 :>   0b10101010

We can use and or or for masking purposes!

⚠️ REMINDER
Again! Immediate modes only work for r16 - r31

We can clear a register with eor.

ldi   r16, 0b11010101
eor   r16, r16
;   r16 :> 0b00000000

Complements and Negatives

::com

Allows toggle all bits of a register!

ldi   r16, 0b11110011
com   r16
;   r16 :> 0b00001100

::neg

Negates a register's content

ldi   r16, 5   ; load 5 into r16
neg   r16   ; negates r16 
;  r16 :> -5 (0xFB)