IP2022 Data Sheet
www.ubicom.com
45
dec w,fr
W = fr -1
Decrement fr into W
1
0000 110f ffff ffff
Z
decsnz fr
fr = fr - 1
if fr != 0 then skip
Decrement fr into fr then skip if
not zero (STATUS not updated)
1 or
2 (skip)
0100 111f ffff ffff
None
decsnz w,fr
W = fr - 1
if fr != 0 then skip
Decrement fr into W then skip if
not zero (STATUS not updated)
1 or
2 (skip)
0100 110f ffff ffff
None
decsz fr
fr = fr - 1
if fr = 0 then skip
Decrement fr into fr then skip if
zero (STATUS not updated)
1 or
2 (skip)
0010 111f ffff ffff
None
decsz w,fr
W = fr - 1
if fr = 0 then skip
Decrement fr into W then skip if
zero (STATUS not updated)
1 or
2 (skip)
0010 110f ffff ffff
None
inc fr
fr = fr + 1
Increment fr into fr
1
0010 101f ffff ffff
Z
inc w,fr
W = fr + 1
Increment fr into W
1
0010 100f ffff ffff
Z
incsnz fr
fr = fr + 1
if fr != 0 then skip
Increment fr into fr then skip if
not zero (STATUS not updated)
1 or
2 (skip)
0101 101f ffff ffff
None
incsnz w,fr
W = fr + 1
if fr != 0 then skip
Increment fr into W then skip if
not zero (STATUS not updated)
1 or
2 (skip)
0101 100f ffff ffff
None
incsz fr
fr = fr + 1
if fr = 0 then skip
Increment fr into fr then skip if
zero (STATUS not updated)
1 or
2 (skip)
0011 111f ffff ffff
None
incsz w,fr
W = fr + 1
if fr = 0 then skip
Increment fr into W then skip if
zero (STATUS not updated)
1 or
2 (skip)
0011 110f ffff ffff
None
muls w,fr
MULH || W = W × fr
Signed 8 × 8 multiply (bit 7 =
sign) W,fr into MULH || W
1
0101 010f ffff ffff
None
muls w,#lit8 MULH || W = W × lit8 Signed 8 × 8 multiply (bit 7 =
sign) W,literal into MULH || W
1
0111 0011 kkkk kkkk
None
mulu w,fr
MULH || W = W × fr
Unsigned 8 × 8 multiply W,fr into
MULH || W
1
0101 000f ffff ffff
None
mulu w,#lit8 MULH || W = W × lit8 Unsigned 8 × 8 multiply W,literal
into MULH || W
1
0111 0010 kkkk kkkk
None
rl fr
fr || C = C || fr
Rotate fr left through carry into fr
1
0011 011f ffff ffff
C
rl w,fr
W || C = C || fr
Rotate fr left through carry into W
1
0011 010f ffff ffff
C
rr fr
C || fr = fr || C
Rotate fr right through carry into
fr
1
0011 001f ffff ffff
C
rr w,fr
C || W = fr || C
Rotate fr right through carry into
W
1
0011 000f ffff ffff
C
sub fr,w
fr = fr - W
Subtract W from fr into fr
1
0000 101f ffff ffff C, DC, Z
sub w,fr
W = fr - W
Subtract W from fr into W
1
0000 100f ffff ffff C, DC, Z
sub w,#lit8
W = lit8 - W
Subtract W from literal into W
1
0111 1010 kkkk kkkk C, DC, Z
subc fr,w
fr = fr - C - W
Subtract carry,W from fr into fr
1
0100 101f ffff ffff C, DC, Z
subc w,fr
W = fr - C - W
Subtract carry,W from fr into W
1
0100 100f ffff ffff C, DC, Z
Table 4-3 Arithmetic and Shift Instructions (continued)
Assembler
Syntax
Pseudocode
Definition
Description
Cycles
Opcode
Flags
Affected