English
Language : 

UPSD3212A Datasheet, PDF (18/163 Pages) STMicroelectronics – Flash Programmable System Devices with 8032 MCU with USB and Programmable Logic
uPSD3212A, uPSD3212C, uPSD3212CV
Table 4. Arithmetic Instructions
Mnemonic
Operation
ADD A,<byte>
ADDC A,<byte>
SUBB A,<byte>
INC
INC <byte>
INC DPTR
DEC
DEC <byte>
MUL AB
DIV AB
DA A
A = A + <byte>
A = A + <byte> + C
A = A – <byte> – C
A=A+1
<byte> = <byte> + 1
DPTR = DPTR + 1
A=A–1
<byte> = <byte> – 1
B:A = B x A
A = Int[ A / B ]
B = Mod[ A / B ]
Decimal Adjust
Addressing Modes
Dir.
Ind.
Reg.
Imm
X
X
X
X
X
X
X
X
X
X
X
X
Accumulator only
X
X
X
Data Pointer only
Accumulator only
X
X
X
Accumulator and B only
Accumulator and B only
Accumulator only
Logical Instructions
Table 5., page 19 shows list of uPSD321x Devic-
es logical instructions. The instructions that per-
form Boolean operations (AND, OR, Exclusive
OR, NOT) on bytes perform the operation on a bit-
by-bit basis. That is, if the Accumulator contains
00110101B and byte contains 01010011B, then:
ANL A, <byte>
will leave the Accumulator holding 00010001B.
The addressing modes that can be used to access
the <byte> operand are listed in Table 5.
The ANL A, <byte> instruction may take any of the
forms:
ANL A,7FH(direct addressing)
ANL A, @R1 (indirect addressing)
ANL A,R6 (register addressing)
ANL A,#53H (immediate constant)
Note: Boolean operations can be performed on
any byte in the internal Data Memory space with-
out going through the Accumulator. The XRL
<byte>, #data instruction, for example, offers a
quick and easy way to invert port bits, as in
XRL P1, #0FFH.
If the operation is in response to an interrupt, not
using the Accumulator saves the time and effort to
push it onto the stack in the service routine.
The Rotate instructions (RL A, RLC A, etc.) shift
the Accumulator 1 bit to the left or right. For a left
rotation, the MSB rolls into the LSB position. For a
right rotation, the LSB rolls into the MSB position.
The SWAP A instruction interchanges the high
and low nibbles within the Accumulator. This is a
useful operation in BCD manipulations. For exam-
ple, if the Accumulator contains a binary number
which is known to be less than 100, it can be quick-
ly converted to BCD by the following code:
MOVE B,#10
DIV AB
SWAP A
ADD A,B
Dividing the number by 10 leaves the tens digit in
the low nibble of the Accumulator, and the ones
digit in the B register. The SWAP and ADD instruc-
tions move the tens digit to the high nibble of the
Accumulator, and the ones digit to the low nibble.
18/163