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¶
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)