0% found this document useful (0 votes)
110 views

Arithmetic, Logic Instructions, and Programs

The document summarizes arithmetic, logic, and programming instructions for the 8051 microcontroller. It discusses addition and subtraction of unsigned and signed numbers. It also covers logic operations, compare instructions, rotating bits, and manipulating the carry flag. Checksum calculations are described to ensure integrity of ROM contents. Conversion between packed BCD and ASCII formats is also summarized.

Uploaded by

Colesha Baruka
Copyright
© © All Rights Reserved
We take content rights seriously. If you suspect this is your content, claim it here.
Available Formats
Download as PPT, PDF, TXT or read online on Scribd
0% found this document useful (0 votes)
110 views

Arithmetic, Logic Instructions, and Programs

The document summarizes arithmetic, logic, and programming instructions for the 8051 microcontroller. It discusses addition and subtraction of unsigned and signed numbers. It also covers logic operations, compare instructions, rotating bits, and manipulating the carry flag. Checksum calculations are described to ensure integrity of ROM contents. Conversion between packed BCD and ASCII formats is also summarized.

Uploaded by

Colesha Baruka
Copyright
© © All Rights Reserved
We take content rights seriously. If you suspect this is your content, claim it here.
Available Formats
Download as PPT, PDF, TXT or read online on Scribd
You are on page 1/ 62

CHAPTER 6

ARITHMETIC, LOGIC
INSTRUCTIONS, AND
PROGRAMS
Addition of Unsigned Numbers
The instruction ADD is used to add two
operands
◦ Destination operand is always in register A
◦ Source operand can be a register, immediate
data, or in memory
 Memory-to-memory arithmetic operations are never
allowed in 8051 Assembly language
ADDC and Addition of 16-Bit
Numbers
When adding two 16-bit data operands,
the propagation of a carry from lower byte
to higher byte is concerned
BCD Number System
The binary representation of the digits 0 to
9 is called BCD (Binary Coded Decimal)
◦ Unpacked BCD
 The lower 4 bits of the number represent the BCD
number, and the rest of the bits are 0
 Ex. 00001001 and 00000101 are unpacked BCD for 9 and 5

◦ Packed BCD
 A single byte has two BCD number in it, one in the
lower 4 bits, and one in the upper 4 bits
 Ex. 0101 1001 is packed BCD for 59
BCD Number System (cont.)
Adding two BCD numbers must give a
BCD result
DA Instruction
The DA instruction is provided to correct
the aforementioned problem associated
with BCD addition
DA Instruction (cont.)
After an ADD or ADDC instruction
◦ If the lower nibble (4 bits) is greater than 9, or
if AC=1, add 0110 to the lower 4 bits
◦ If the upper nibble is greater than 9, or if
CY=1, add 0110 to the upper 4 bits
Subtraction of Unsigned Numbers
In many microprocessor, there are two
different instructions for subtraction:
◦ SUB and SUBB (subtract with borrow)
In the 8051 we have only SUBB
◦ The 8051 uses adder circuitry to perform the
subtraction
◦ To make SUB out of SUBB, we have to make
CY=0 prior to the execution
 Notice that we use the CY flag for the borrow
Subtraction of Unsigned Numbers
(cont.)
SUBB when CY = 0
◦ Take the 2’s complement of the subtrahend
◦ Add it to the minuend (A)
◦ Invert the carry
 CY=0, the result is positive
 CY=1, the result is negative
 The destination has the 2’s complement of the result
SUBB when CY = 1
◦ Used for multi-byte numbers
 Take care of the borrow of the lower operand
Unsigned Multiplication
The 8051 supports byte by byte
multiplication only
◦ The byte are assumed to be unsigned data
Unsigned Division
The 8051 supports byte over byte division
only
◦ The byte are assumed to be unsigned data
Signed 8-bit Operands
D7 (MSB) is the sign and D0 to D6 are
the magnitude of the number
◦ If D7=0, the operand is positive
◦ If D7=1, it is negative
Positive numbers are 0 to +127
Signed 8-bit Operands
D7 (MSB) is the sign and D0 to D6 are
the magnitude of the number
◦ If D7=0, the operand is positive
◦ If D7=1, it is negative
Positive numbers are 0 to +127
Signed 8-bit Operands (cont.)
Negativenumber representation (2’s
complement)
◦ Write the magnitude of the number in 8-bit
binary (no sign)
◦ Invert each bit
◦ Add 1 to it
Overflow Problem
Ifthe result of an operation on signed
numbers is too large for the register
◦ An overflow has occurred
OV Flag
In 8-bit signed number operations, OV is
set to 1 if either occurs:
◦ There is a carry from D6 to D7, but no carry
out of D7 (CY=0)
◦ There is a carry from D7 out (CY=1), but no
carry from D6 to D7
OV Flag (cont.)
Inunsigned number addition, we must
monitor the status of CY (carry)
◦ Use JNC or JC instructions
In signed number addition, the OV
(overflow) flag must be monitored
◦ JB PSW.2 or JNB PSW.2
To make the 2’s complement of a number
Logic & Compare Instructions
This instruction will perform a logic AND
on the two operands and place the result
in the destination
◦ The destination is normally the accumulator
◦ The source operand can be a register, in
memory, or immediate
Logic & Compare Instructions
(cont.)
The destination and source operands are
ORed and the result is placed in the
destination
◦ The destination is normally the accumulator
◦ The source operand can be a register, in
memory, or immediate
Logic & Compare Instructions
(cont.)
This instruction will perform XOR
operation on the two operands and place
the result in the destination
◦ The destination is normally the accumulator
◦ The source operand can be a register, in
memory, or immediate
Logic & Compare Instructions
(cont.)
This is called 1’s complement
To get the 2’s complement, all we have to
do is to to add 1 to the 1’s complement
Compare Instruction
Combining the actions of comparing and
jumping into a single instruction
◦ Called CJNE (compare and jump if not equal)
◦ This instruction compares two operands, and
jumps if they are not equal
 The destination operand can be in the accumulator
or in one of the Rn registers
 The source operand can be in a register, in memory,
or immediate
Compare Instruction (cont.)
◦ The operands themselves remain unchanged
 It changes the CY flag to indicate if the destination
operand is larger or smaller
◦ In the CJNE instruction that any Rn register
can be compared with an immediate value
 There is no need for register A to be involved
Compare Instruction (cont.)
The compare instruction is really a
subtraction
◦ Except that the operands remain unchanged
◦ Flags are changed according to the execution
of the SUBB instruction
Rotating Right and Left
In rotate right, the 8 bits of the
accumulator are rotated right one bit
◦ Bit D0 exits from the LSB and enters into
MSB, D7
Rotating Right and Left (cont.)
In rotate left, the 8 bits of the accumulator
are rotated left one bit,
◦ Bit D7 exits from the MSB and enters into
LSB, D0
Notice in the RR and RL instructions that no flags are affected.
Rotating through Carry
In RRC A, bits are rotated from left to
right
◦ They exit the LSB to the carry flag, and the
carry flag enters the MSB
Rotating through Carry (cont.)
In RLC A, bits are shifted from right to
left
◦ They exit the MSB and enter the carry flag,
and the carry flag enters the LSB
Serializing Data
Serializing data is a way of sending a byte
of data one bit at a time through a single
pin of microcontroller
◦ Using the serial port
◦ Controlling the sequence of data and spaces in
between them
 Transfer a byte of data serially by
 Moving CY to any pin of ports P0 – P3
 Using rotate instruction
Single-bit Operations with CY
There are several instructions by which
the CY flag can be manipulated directly
SWAP
Itswaps the lower nibble and the higher
nibble
◦ The lower 4 bits are put into the higher 4 bits
and the higher 4 bits are put into the lower 4
bits
◦ SWAP works only on the accumulator (A)
Checksum Byte in ROM
To ensure the integrity of the ROM
contents, every system must perform the
checksum calculation
◦ The process of checksum will detect any
corruption of the contents of ROM
◦ The checksum process uses what is called a
checksum byte
 The checksum byte is an extra byte that is tagged to
the end of series of bytes of data
Checksum Byte in ROM (cont.)
To calculate the checksum byte of a series
of bytes of data
◦ Add the bytes together and drop the carries
◦ Take the 2’s complement of the total sum, and it
becomes the last byte of the series
To perform the checksum operation, add all
the bytes, including the checksum byte
◦ The result must be zero
◦ If it is not zero, one or more bytes of data have
been changed
Packed BCD to ACSII Conversion
The DS5000T microcontrollers have a
real-time clock (RTC)
◦ The RTC provides the time of day (hour,
minute, second) and the date (year, month,
day) continuously,
 Regardless of whether the power is on or off
 This data is provided in packed BCD
 To be displayed on an LCD or printed by the printer, it must
be in ACSII format
ASCII to Packed BCD Conversion
To convert ASCII to packed BCD
◦ It is first converted to unpacked BCD (to get
rid of the 3)
◦ Combined to make packed BCD

You might also like