Professional Documents
Culture Documents
1 / 26
Outline
Overview of assembly programming
MARS tutorial
MIPS assembly syntax
Role of pseudocode
2 / 26
Assembly program template
.data
Data segment:
• constant and variable definitions go here
.text
Text segment:
• assembly instructions go here
3 / 26
Components of an assembly program
4 / 26
Lexical categories in hello world
5 / 26
Pseudocode
What is pseudocode?
• informal language
• intended to be read by humans
6 / 26
How to write assembly code
Strategy
1. develop algorithm in pseudocode
2. break it into small pieces
3. implement (and test) each piece in assembly
7 / 26
Outline
Overview of assembly programming
MARS tutorial
MIPS assembly syntax
Role of pseudocode
8 / 26
MIPS register names and conventions
9 / 26
Integer logic and arithmetic
# Instruction # Meaning in pseudocode
# set if equal:
seq $t1, $t2, $t3 # $t1 = $t2 == $t3 ? 1 : 0
10 / 26
Immediate instructions
# add/subtract/and immediate:
addi $t1, $t2, 4 # $t1 = $t2 + 4
subi $t1, $t2, 15 # $t1 = $t2 - 15
andi $t1, $t2, 0x00FF # $t1 = $t2 & 0x00FF
11 / 26
Multiplication
Expands to:
mult $t1, $t2
mflo $t0
12 / 26
Integer division
13 / 26
Manipulating register values
# copy register:
move $t1, $t2 # $t1 = $t2
14 / 26
Outline
Overview of assembly programming
MARS tutorial
MIPS assembly syntax
Role of pseudocode
15 / 26
Declaring constants and variables
.data
16 / 26
Sequential declarations
17 / 26
Reserving space
18 / 26
Reading from data memory
19 / 26
Writing to data memory
20 / 26
Sub-word addressing
3 2 1 0 7 6 5 4 11 10 9 8 15 14 13 12
21 / 26
Reading/writing data memory wrap up
22 / 26
Outline
Overview of assembly programming
MARS tutorial
MIPS assembly syntax
Role of pseudocode
23 / 26
Memory-mapped I/O
24 / 26
Role of the operating system
Usually, however:
• we don’t know (or want to know) the special addresses
• user programs don’t have permission to use them directly
25 / 26
System calls
26 / 26