0% found this document useful (0 votes)
83 views2 pages

AVR202: 16-Bit Arithmetics: 8-Bit MCU With Downloadable Flash Application Note

This document discusses performing arithmetic operations on 16-bit values using AVR microcontrollers. It provides examples of how to add, subtract, compare, and negate 16-bit register variables and 16-bit values with 1-2 byte instructions. A table is included that lists the code size and execution time for common 16-bit arithmetic operations.

Uploaded by

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

AVR202: 16-Bit Arithmetics: 8-Bit MCU With Downloadable Flash Application Note

This document discusses performing arithmetic operations on 16-bit values using AVR microcontrollers. It provides examples of how to add, subtract, compare, and negate 16-bit register variables and 16-bit values with 1-2 byte instructions. A table is included that lists the code size and execution time for common 16-bit arithmetic operations.

Uploaded by

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

AVR202: 16-Bit Arithmetics

Features Introduction 8-Bit


• Easily Expandable to 32-Bit or Any This application note lists program
Word Length
• Code Density and Speed Matches 16-Bit
examples for arithmetic operation on 16- MCU with
bit values. A listing of all implementa-
Controllers
• Runable Example Program
tions with key performance specifica- Downloadable
tions is given in Table 1.
Flash
Table 1. Performance Figures Summary
Application Code Size Execution Time
(Words) (Cycles)
Application
Add two 16-bit register variables 2 2
Add 16-bit immediate to 16-bit register variable 2 2 Note
Subtract two 16-bit register variables 2 2 AVR202
Subtract 16-bit immediate from 16-bit reg. variable 2 2
Compare two 16-bit register variables 2 2
Compare 16-bit immediate to 16-bit reg. variable 3 3
Negate a 16-bit register variable 4 4

16 + 16-Bit Register 1. Subtract immediate low byte of


Addition negated number from register low
byte.
This operation is done as follows:
2. Subtract immediate with carry high
1. Add low bytes. byte of negated number from regis-
2. Add with carry high bytes. ter high byte.
By adding more Add with Carry instruc- By adding more Add with Carry instruc-
tions, numbers of n -byte width can be tions, numbers of n -byte width can be
added using n instructions. added using n instructions.

16-Bit Register + 16-Bit 16 – 16-Bit Register


Immediate Addition Subtraction
As the AVR has no add immediate or This operation is done as follows:
add immediate with carry, the subtract 1. Subtract low bytes.
immediate and subtract immediate with
2. Subtract with carry high bytes.
carry instructions are used. The opera-
tion is done as follows: By adding more Subtract with Carry
instructions, numbers of n -byte width
can be subtracted using n instructions.

0937A-A–8/97

1
16-Bit Register + 16-Bit Immediate
Subtraction
This operation is done as follows:
1. Subtract immediate low byte from register low byte.
2. Subtract with carry immediate high byte from register
high byte.
By adding more Subtract with Carry instructions, numbers
of n-byte width can be subtracted using n instructions.

Compare two 16-bit Register Variables


This operation is done as follows:
1. Compare low bytes.
2. Compare with carry high bytes.
Note that the Compare with Carry instruction supports
zero-propagation, which means that all conditional branch
instructions can be used following the two-step compare
operation. By adding more Compare with Carry instruc-
tions, numbers of n-byte width can be compared using n
instructions.

Compare a 16-bit Register with a 16-Bit


Immediate
This operation is done as follows:
1. Compare register low byte to immediate low byte.
2. Store immediate high byte to a third register.
3. Compare with carry high bytes.

Negate (2’s Complement) a 16-Bit


Register Variable
This operation is done as follows:
1. Invert (1’s Complement) low byte
2. Invert (1’s Complement) high byte
3. Subtract $FF from low byte.
4. Subtract with carry $FF from high byte.

Note: Steps 3 and 4 are equivalent to adding $0001 to the 16-


bit number.

2 AVR202

You might also like