Table 4. arithmetic instructions, Logical instructions, Table – ST & T UPSD3212C User Manual

Page 18

Advertising
background image

uPSD3212A, uPSD3212C, uPSD3212CV

18/163

Table 4. Arithmetic Instructions

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.

Mnemonic

Operation

Addressing Modes

Dir.

Ind.

Reg.

Imm

ADD A,<byte>

A = A + <byte>

X

X

X

X

ADDC A,<byte>

A = A + <byte> + C

X

X

X

X

SUBB A,<byte>

A = A – <byte> – C

X

X

X

X

INC

A = A + 1

Accumulator only

INC <byte>

<byte> = <byte> + 1

X

X

X

INC DPTR

DPTR = DPTR + 1

Data Pointer only

DEC

A = A – 1

Accumulator only

DEC <byte>

<byte> = <byte> – 1

X

X

X

MUL AB

B:A = B x A

Accumulator and B only

DIV AB

A = Int[ A / B ]

B = Mod[ A / B ]

Accumulator and B only

DA A

Decimal Adjust

Accumulator only

Advertising
This manual is related to the following products: