22/10/2018
CHAPTER 2
AVR Architecture and Assembly
Language Programing
Department of Electrical Engineering
Khusnulhidayat[at]yahoo.com 1
Structure of Assembly Language
An Assembly language instruction consists of a
mnemonic, optionally followed by one or two
operands.
The operands are the data items being
manipulated.
The mnemonic s are the commands to the
CPU.
Khusnulhidayat[at]yahoo.com 2
1
22/10/2018
General Purpose Registers (GPR)
Least Sigificant Bit (LSB)
Most Significant Bit (MSB)
Khusnulhidayat[at]yahoo.com 3
LDI Instruction
The LDI instruction copies 8-bit data into the
GPR. It has the following format:
LDI Rd,K
Note:
Load Rd (destination) with immediate value K, d
must between 16 and 31.
Example:
LDI R20, 0x25 ;load R20 with 0x25 (R20=0x25)
Khusnulhidayat[at]yahoo.com 4
2
22/10/2018
ADD Instruction
It has the following format:
ADD Rd,Rr
Note:
ADD Rr to Rd and store the result in Rd.
Example:
LDI R16,0x25
LDI R17,0x34
ADD R16,R17
Khusnulhidayat[at]yahoo.com 5
The AVR Memory
1. Flash/Program/Code Memory
2. Data Memory
Khusnulhidayat[at]yahoo.com 6
3
22/10/2018
The AVR Data Memory
Khusnulhidayat[at]yahoo.com 7
The AVR Data Memory
Khusnulhidayat[at]yahoo.com 8
4
22/10/2018
Data Memory Size for AVR Chips
Khusnulhidayat[at]yahoo.com 9
LDS Instruction
(LoaD direct from data Space)
It has the following format:
LDS Rd,K
Note:
Load Rd (0≤n≤31) with the contents of the
location K, K is an address between $0000 to
$FFFF.
Example:
LDS R5,0x200 ;0x200 is address on SRAM
Khusnulhidayat[at]yahoo.com 10
5
22/10/2018
LDS Instruction Example
Khusnulhidayat[at]yahoo.com 11
STS Instruction
(STore direct to data Space)
It has the following format:
STS K,Rr
Note:
Store register into location K, K is an address
between $0000 to $ FFFF.
Example:
STS 0x230,R25
Khusnulhidayat[at]yahoo.com 12
6
22/10/2018
IN Instruction (IN from I/O)
IN Rd,A
Note:
Load an I/O location to the GPR (0≤n≤31),
(0≤A≤63).
Example:
IN R19,0x10
or
IN R19,PIND
Khusnulhidayat[at]yahoo.com 13
I/O Register
Khusnulhidayat[at]yahoo.com 14
7
22/10/2018
OUT Instruction (OUT to I/O)
OUT A,Rr
Note:
Store register to I/O location.
Example:
IN R0,PIND
OUT PORTA,R0
Khusnulhidayat[at]yahoo.com 15
MOV Instruction
The MOV instruction is used to copy data among
the GPR registers of R0-R31.
MOV Rd,Rr ;Rd=Rr (copy Rr to Rd)
Example:
MOV R10,R20
Khusnulhidayat[at]yahoo.com 16
8
22/10/2018
INC Instruction
INC Rd
Note:
Increment the contents of Rd by one (0≤n≤31).
Example:
INC R2 ;R2 = R2 + 1
Khusnulhidayat[at]yahoo.com 17
SUB Instruction
SUB Rd,Rr ;Rd = Rd – Rr
Example:
LDI R20,0x34
LDI R21,0x25
SUB R20,R21
STS 0x300,R20
Khusnulhidayat[at]yahoo.com 18
9
22/10/2018
DEC Instruction
DEC Rd ; Rd = Rd -1
Example:
LDI R30,3 ;R30 = 3
DEC R30 ;R30 has 2
DEC R30 ;R30 has 1
DEC R30 ;R30 has 0
Khusnulhidayat[at]yahoo.com 19
COM Instruction
COM Rd
Note:
Inverts (complements) the content of Rd and
places the result back into the Rd register.
Example:
LDI R16,0x55
COM R16 ;R16 = 0xAA
Khusnulhidayat[at]yahoo.com 20
10
22/10/2018
AVR Status Register
C, the carry flag: this flag is set whenever
there is a carry out from D7 bit.
Z, the zero flag: the zero flag reflects the result
of an aritmethic or logic operation.
Khusnulhidayat[at]yahoo.com 21
AVR Status Register
N, the negative flag: binary representation of
signed numbers uses D7 as the sign bit.
V, the two’s complement overflow flag: this
flag supports two’s complement aritmethics.
Khusnulhidayat[at]yahoo.com 22
11
22/10/2018
AVR Status Register
S, the sign bit: this flag is the result of
Exclusive-ORing of N and V flags.
H, the half carry flag: if there is a carry from
D3 to D7 during ADD and SUB operation.
Khusnulhidayat[at]yahoo.com 23
Flags Example
Khusnulhidayat[at]yahoo.com 24
12
22/10/2018
Flags Example
Khusnulhidayat[at]yahoo.com 25
Flags Example
Khusnulhidayat[at]yahoo.com 26
13
22/10/2018
AVR Data Type
Hex numbers; put 0x or 0X or $ in front of the
number like this: 0x98, 0X76, $99.
Binary numbers; 0b or 0B in front of the
number like this: 0b1010, 0X01110000.
Decimal numbers; simply use the decimal.
ASCII characters; use single quotes as
following: LDI R16,’2’.
Khusnulhidayat[at]yahoo.com 27
Assembler Directives
.EQU(equate)
This used to define a constant value or fixed
address.
Example:
.EQU COUNT = 0x25
..........................
LDI R21,COUNT ;R21 = 0x25
Khusnulhidayat[at]yahoo.com 28
14
22/10/2018
Assembler Directives
.INCLUDE
The .include directive tells the AVR assembler to
add the contents of a file to our program.
Example:
.INCLUDE “M32DEF.INC”
Khusnulhidayat[at]yahoo.com 29
Program Counter in the AVR
Each Flash memory location in 2 bytes wide.
In ATMega32, whose Flash is 32Kbytes, the
Flash is organized as 16K x 2, and its program
counter is 14 bits wide (214 = 16K memory
location).
Khusnulhidayat[at]yahoo.com 30
15
22/10/2018
ROM Memory in the AVR
Khusnulhidayat[at]yahoo.com 31
Program ROM Width for the AVR
Add Bus
Data Bus
Khusnulhidayat[at]yahoo.com 32
16
22/10/2018
The AVR Wakes Up
At what address does the CPU wake up when
power is applied? Each microprocessor is
different.
The AVR microcontroller wakes up at memory
address $0000 when it is powered up, then PC
(Program Counter) has the value of 0000 in it.
The first opcode must be burned into memory
location $0000 of program ROM by using the
.ORG statement in the source program.
Khusnulhidayat[at]yahoo.com 33
.ORG (origin) Directive
Khusnulhidayat[at]yahoo.com 34
17
22/10/2018
The Machine Code
Instruction “LDI Rd,K” in Binary:
Instruction “LDI Rd,K” in Hex:
Khusnulhidayat[at]yahoo.com 35
The Machine Code
Instruction “ADD Rd,Rr” in Binary:
Instruction “ADD Rd,Rr” in Hex:
Khusnulhidayat[at]yahoo.com 36
18
22/10/2018
The Machine Code
IN Instruction:
OUT Instruction:
Khusnulhidayat[at]yahoo.com 37
The Machine Code
STS Instruction:
LDS Instruction:
Khusnulhidayat[at]yahoo.com 38
19
22/10/2018
The Machine Code
JMP Instruction:
Khusnulhidayat[at]yahoo.com 39
Harvard Architecture in the AVR
Khusnulhidayat[at]yahoo.com 40
20
22/10/2018
Futures of RISC
Future 1:
RISC processors have a fixed instruction size
(2-byte instructions with very few 4-byte).
In a CISC microcontroller such as the 8051,
instructions cab be 1, 2, or even 3 bytes.
This is like bricklayer working with bricks of
the same size as opposed to using bricks of
variable sizes. Of course, it is much more
efficient tu use bricks of the same sizes.
Khusnulhidayat[at]yahoo.com 41
Futures of RISC
Future 2:
RISC architecture is a large number of
registers, all RISC architecture have at least 32
register.
One advantage is that it avoids the need for
large stack to store parameters.
Khusnulhidayat[at]yahoo.com 42
21
22/10/2018
Futures of RISC
Future 3:
RISC processors have a small instruction set,
hardwiring of RISC instruction take no more
than 10% of transistors (CISC 40-60%).
Future 4:
More than 95% of instructions are executed
with only one clock cycle.
Khusnulhidayat[at]yahoo.com 43
Futures of RISC
Future 5:
In CISC processor, there is one set of buses for
the address and another set of buses for data.
In RISC processor, there are four sets of buses:
(1) a set of data buses for carrying data in and
out of the CPU, (2) a set of address buses for
accessing data, (3) a set of buses to carry the
opcodes, (4) a set of address buses to access
the opcodes.
Khusnulhidayat[at]yahoo.com 44
22
22/10/2018
Futures of RISC
Future 6:
RISC “load-store architecture”
– Only load/store access memory
– Benefit: simpler hardware easier to pipeline,
higher performace
CISC “register-memory architecture”
– All operations can have an operand in memory
– Benefit: fewer instructions smaller code
Khusnulhidayat[at]yahoo.com 45
References
Mazidi, M.A., NAIMI, S., NAIMI., S. (2011). The
AVR Microcontroller and Embedded System.
New York: Prentice-Hall.
Khusnulhidayat[at]yahoo.com 46
23
22/10/2018
Thank You
Khusnulhidayat[at]yahoo.com
Electrical Engineering Department
University of Muhammadiyah Malang (UMM)
Khusnulhidayat[at]yahoo.com 47
24