and


Logical product.

[Syntax]

-

and reg1, reg2

-

and imm, reg2

 

The following can be specified for imm:

-

Absolute expression having a value of up to 32 bits

-

Relative expression

[Function]

-

Syntax "and reg1, reg2"

ANDs the value of the register specified by the first operand with the value of the register specified by the second operand, and stores the result in the register specified by the second operand.

-

Syntax "and imm, reg2"

ANDs the value of the absolute expression or relative expression specified by the first operand with the value of the register specified by the second operand, and stores the result in the register specified by the second operand.

[Description]

-

When this instruction is executed in syntax "and reg1, reg2", the assembler generates one and machine instruction.

-

When this instruction is executed in syntax "and imm, reg2", and the following expression is specified for imm, the assembler executes instruction expansion to generate one or more machine instructionsNote.

(a)

0

and     0, reg
and     r0, reg

(b)

Absolute expression having a value in the range of 1 to 65,535

and     imm16, reg
andi    imm16, reg, reg

(c)

Absolute expression having a value in the range of -16 to -1

and     imm5, reg
mov     imm5, r1
and     r1, reg

(d)

Absolute expression having a value in the range of -32,768 to -17

and     imm16, reg
movea   imm16, r0, r1
and     r1, reg

(e)

Absolute expression exceeding the above ranges

If all the lower 16 bits of the value of imm are 0

and     imm, reg
movhi   HIGHW(imm), r0, r1
and     r1, reg

Else

and     imm, reg
mov     imm, r1
and     r1, reg

(f)

Relative expression having !label or %label

and     !label, reg
andi    !label, reg, reg
and     %label, reg
andi    %label, reg, reg

(g)

Relative expression having $label for a label having a definition in the sdata/sbss-attribute section

and     $label, reg
movea   $label, r0, r1
and     r1, reg

(h)

Relative expression having #label or label, or that having $label for a label having no definition in the sdata/sbss-attribute section

and     #label, reg
mov     #label, r1
and     r1, reg
and     label, reg
mov     label, r1
and     r1, reg
and     $label, reg
mov     $label, r1
and     r1, reg

Note

The and machine instruction does not take an immediate value as an operand.

[Flag]

CY

---

OV

0

S

1 if the word data MSB of the result is 1, 0 if not

Z

1 if the result is 0, 0 if not

SAT

---