Professional Documents
Culture Documents
EEE415-Week02-Assembly Language
EEE415-Week02-Assembly Language
1
DRAFT 6/26/2023
Week 2
2
DRAFT 6/26/2023
Programming
• A computer is useless
without the software
• We need a “language” to
communicate our
instructions/commands to a
computer
3
DRAFT 6/26/2023
Introduction to Architecture
• The architecture is the programmer’s view of a computer.
• The first step in understanding any computer architecture is to learn its language.
The words in a computer’s language are called instructions. The computer’s
vocabulary is called the instruction set.
• All programs running on a computer use the same instruction set. Even
complex software applications, such as word processing and spreadsheet
applications, are eventually compiled into a series of simple instructions such
as add, subtract, and branch
• Computer hardware understands only 1’s and 0’s, so instructions are encoded as
binary numbers in a format called machine language. Just as we use letters to
encode human language, computers use binary numbers to encode machine
language.
• However, humans consider reading machine language to be tedious, so we
prefer to represent the instructions in a symbolic format called assembly
language.
Dr. Sajid Muhaimin Choudhury 7
EEE 415 - Department of EEE, BUET
Slides Courtesy: Dr. Md. Zunaid Baten
7
Introduction
• The instruction sets of different architectures are more like different dialects than
different languages. Almost all architectures define basic instructions, such as
add, subtract, and branch, that operate on memory or registers. Once you have
learned one instruction set, understanding others is fairly straightforward.
• For example, Intel and Advanced Micro Devices (AMD) both sell various
microprocessors belonging to the same x86 architecture.
• They all can run the same programs, but they use different underlying
hardware and therefore offer trade-offs in performance, price, and power.
4
DRAFT 6/26/2023
Introduction
• We introduce the ARM architecture. This architecture was first developed in the
1980s by Acorn Computer Group, which spun off Advanced RISC Machines Ltd.,
now known as ARM. Over 10 billion ARM processors are sold every year.
• We then describe how the assembly language translates into machine language
and show how a program is loaded into memory and executed.
ARM Architecture
• Developed in the 1980’s by Advanced RISC Machines – now
called ARM Holdings
• Nearly 10 billion ARM processors sold/year
• Almost all cell phones and tablets have multiple ARM
processors
• Over 75% of humans use products with an ARM processor
• Used in servers, cameras, robots, cars, pinball machines, etc.
10
5
DRAFT 6/26/2023
11
Instruction: Addition
12
6
DRAFT 6/26/2023
Instruction: Subtraction
Similar to addition - only mnemonic changes
• SUB: mnemonic
• b, c: source operands
• a: destination operand
13
14
7
DRAFT 6/26/2023
Multiple Instructions
More complex code handled by multiple ARM instructions.
Instead of having a separate instruction for x+y-z, we can
combine 2 statements
15
16
8
DRAFT 6/26/2023
Operand Location
Physical location in computer
– Registers
– Constants (also called immediates)
– Memory
17
Operands: Registers
• ARM has 16 registers
• Registers are faster than memory
• Each register is 32 bits
• ARM is called a “32-bit architecture”
because it operates on 32-bit data
18
9
DRAFT 6/26/2023
19
20
10
DRAFT 6/26/2023
Operands: Registers
• Registers:
– R before number, all capitals
– Example: “R0” or “register zero” or “register R0”
21
Operands: Registers
• Registers used for specific purposes:
– Saved registers: R4-R11 hold variables
– Temporary registers: R0-R3 and R12, hold
intermediate values
– Discuss others later
22
11
DRAFT 6/26/2023
23
24
12
DRAFT 6/26/2023
Generating Constants
Generating small constants using move (MOV):
C Code ARM Assembly Code
//int: 32-bit signed word ; R0 = a, R1 = b
int a = 23; MOV R0, #23
int b = 0x45; MOV R1, #0x45
25
Generating Constants
Generate larger constants using move (MOV) and or (ORR):
26
13
DRAFT 6/26/2023
Operands: Memory
• Too much data to fit in only 16 registers
• Store more data in memory
• Memory is large, but slow
• Commonly used variables still kept in registers
27
Byte-Addressable Memory
• Each data byte has unique address
• 32-bit word = 4 bytes, so word address increments by 4
28
14
DRAFT 6/26/2023
Reading Memory
• Memory read called load
• Mnemonic: load register (LDR)
• Format:
LDR R0, [R1, #12]
Address calculation:
– add base address (R1) to the offset (12)
– address = (R1 + 12)
Result:
– R0 holds the data at memory address (R1 + 12)
Any register may be used as base address
29
Reading Memory
• Example: Read a word of data at memory address 8 into R3
– Address = (R2 + 8) = 8
– R3 = 0x01EE2842 after load
30
15
DRAFT 6/26/2023
Writing Memory
• Memory write are called stores
• Mnemonic: store register (STR)
31
Writing Memory
Example: Store the value held in R7 into memory word 21.
Memory address = 4 x 21 = 84 = 0x54
32
16
DRAFT 6/26/2023
Accessing Memory
Address of a memory word must be multiplied by 4
Examples:
– Address of memory word 2 = 2 × 4 = 8
– Address of memory word 10 = 10 × 4 = 40
33
34
17
DRAFT 6/26/2023
35
Big-Endian Little-Endian
Big-Endian Little-Endian
Word Word
Byte Address 8 9 A B Address B A 9 88 9Byte
Byte Address A Address
B Address B A 9 8 Byte Address
Data Value 23 45 67 89 0 Data23 45 6723
Value 8945Data Value 0
67 89 23 45 67 89 Data Value
MSB LSB MSB LSB
MSB LSB MSB LSB
Big-endian: 0x00000045 Little-endian: 0x00000067
36
18
DRAFT 6/26/2023
37
R1 = 0x0ABCD876
76 D8 BC 0A 0A BC D8 76
R2=0xBC R2=0xD8
Dr. Sajid Muhaimin Choudhury 38
EEE 415 - Department of EEE, BUET Digital Design and Computer Architecture: ARM® Edition © 2015
38
19
DRAFT 6/26/2023
Summary
• ARM Instruction Format
• Addition
• Subtraction
• Operand Location
• Constant/Immediate
• Register
• Memory
• Endianness
39
Week 2
40
20
DRAFT 6/26/2023
ARM Architecture
41
Armv1 – 1985
Armv2 – 1989
Armv3 – 1991
Armv4 – 1996
42
21
DRAFT 6/26/2023
Arm v9
43
44
22
DRAFT 6/26/2023
45
46
23
DRAFT 6/26/2023
47
48
24
DRAFT 6/26/2023
49
50
25
DRAFT 6/26/2023
51
52
26
DRAFT 6/26/2023
53
54
27
DRAFT 6/26/2023
55
Week 2
56
28
DRAFT 6/26/2023
57
58
29
DRAFT 6/26/2023
Data-processing Instructions
• Logical operations
• Shifts / rotate
• Multiplication
Basics already covered in EEE 303. For recap, read chapter 5 of Sarah Harris’ DDCA
59
Logical Instructions
• AND
• ORR
• EOR (XOR)
• BIC (Bit Clear)
• MVN (MoVe and NOT)
60
30
DRAFT 6/26/2023
61
62
31
DRAFT 6/26/2023
Shift Instructions
• LSL: logical shift left
Example: LSL R0, R7, #5 ; R0 = R7 << 5
63
64
32
DRAFT 6/26/2023
65
Multiplication
• MUL: 32 × 32 multiplication, 32-bit result
MUL R1, R2, R3
Result: R1 = (R2 x R3)31:0
• UMULL: Unsigned multiply long: 32 × 32
multiplication, 64-bit result
UMULL R1, R2, R3, R4
Result: {R2,R1} = R3 x R4 (R3, R4 unsigned)
• SMULL: Signed multiply long: 32 × 32
multiplication, 64-bit result
SMULL R1, R2, R3, R4
Result: {R2,R1} = R3 x R4 (R3, R4 signed)
66
33
DRAFT 6/26/2023
67
Conditional Execution
Don’t always want to execute code sequentially
• For example:
if/else statements, while loops, etc.: only want to
execute code if a condition is true
branching: jump to another portion of code if a
condition is true
• ARM includes condition flags that can be:
set by an instruction
used to conditionally execute an instruction
68
34
DRAFT 6/26/2023
69
70
35
DRAFT 6/26/2023
ARM ALU
71
72
36
DRAFT 6/26/2023
73
74
37
DRAFT 6/26/2023
Condition Mnemonics
• Instruction may be conditionally executed
based on the condition flags
• Condition of execution is encoded as a
condition mnemonic appended to the
instruction mnemonic
Example: CMP R1, R2
SUBNE R3, R5, R8
NE: not equal condition mnemonic
SUB will only execute if R1 ≠ R2
(i.e., Z = 0)
75
Condition Mnemonics
cond Mnemonic Name CondEx
0000 EQ Equal 𝑍
0001 NE Not equal 𝑍̅
0010 CS / HS Carry set / Unsigned higher or same 𝐶
0011 CC / LO Carry clear / Unsigned lower 𝐶̅
0100 MI Minus / Negative 𝑁
0101 PL Plus / Positive of zero 𝑁
0110 VS Overflow / Overflow set 𝑉
0111 VC No overflow / Overflow clear 𝑉
1000 HI Unsigned higher 𝑍̅𝐶
1001 LS Unsigned lower or same 𝑍 𝑂𝑅 𝐶̅
1010 GE Signed greater than or equal 𝑁⊕𝑉
1011 LT Signed less than 𝑁⊕𝑉
1100 GT Signed greater than 𝑍̅(𝑁 ⊕ 𝑉)
1101 LE Signed less than or equal 𝑍 𝑂𝑅 (𝑁 ⊕ 𝑉)
1110 AL (or none) Always / unconditional ignored
Dr. Sajid Muhaimin Choudhury 76
EEE 415 - Department of EEE, BUET Digital Design and Computer Architecture: ARM® Edition © 2015
76
38
DRAFT 6/26/2023
Conditional Execution
Example:
CMP R5, R9 ; performs R5-R9
; sets condition flags
77
Conditional Execution
Example:
CMP R5, R9 ; performs R5-R9
; sets condition flags
78
39
DRAFT 6/26/2023
79
80
40