Transcript Class 2

Informationsteknologi
Today’s class

More assembly language programming
Friday, September 28, 2007
Computer Architecture I - Class 2
1
Informationsteknologi
Data transfer instructions
lw – load word from memory into a
register (note that the address must be a
word address, divisible by 4)
 lb – load byte
 sw – store word into memory from a
register (address must be for a word)
 sb – store byte

Friday, September 28, 2007
Computer Architecture I - Class 2
2
Informationsteknologi
Addition (signed)

add regdest,regsrc1,regsrc2



addi regdest,regsrc,const



Performs regdest = regsrc + const
Add immediate, because const is part of instruction (no memory
reference)
add regdest,regsrc,const


Performs regdest = regsrc1 + regsrc2
Uses register addressing (no memory reference)
Will generate an addi instruction by the assembler
add regdest, const

Will generate addi regdest,regdest,const
Friday, September 28, 2007
Computer Architecture I - Class 2
3
Informationsteknologi
Addition (unsigned)

addu regdest,regsrc1,regsrc2


addiu regdest,regsrc,const


Performs regdest = regsrc + const
addu regdest,regsrc,const


Performs regdest = regsrc1 + regsrc2
Will generate an addiu instruction by the assembler
addu regdest, const

Will generate addiu regdest,regdest,const
Friday, September 28, 2007
Computer Architecture I - Class 2
4
Informationsteknologi
Subtraction

sub regdest,regsrc1,regsrc2



subu regdest,regsrc1,regsrc2



Performs regdest = regsrc1 - regsrc2
This is a signed subtraction
Performs regdest = regsrc1 - regsrc2
This is an unsigned subtraction
No subi instruction

Can do an addi with the negative of what you want
to subtract
Friday, September 28, 2007
Computer Architecture I - Class 2
5
Informationsteknologi
Multiplication






Result of multiplying two 32-bit numbers can be 64 bits
big
Have two special registers called lo and hi to hold the
two 32-bit parts of the result
mult regsrc1,regsrc2 will put the low 32 bits of the product
in lo and the high 32 bits in hi
Use mflo regdest (move from lo) to get the low 32 bits
into a register
Use mfhi regdest (move from hi) to get the high 32 bits
into a register
The pseudo-instruction mul regdest,regsrc1,regsrc2 will get
the low 32 bits of the product into regdest
Friday, September 28, 2007
Computer Architecture I - Class 2
6
Informationsteknologi
Division
div regsrc1,regsrc2 will put the integer
quotient of regsrc1/regsrc2 in lo and the
remainder in hi
 The pseudo-instruction div
regdest,regsrc1,regsrc2 will get the integer
quotient into regdest

Friday, September 28, 2007
Computer Architecture I - Class 2
7
Informationsteknologi
Example program
Program temperature.asm converts
Celsius temperatures to Fahrenheit
 Study it and demo it

Friday, September 28, 2007
Computer Architecture I - Class 2
8
Informationsteknologi
In-class exercise

Modify the temperature conversion
program so it converts from Fahrenheit to
Celsius instead.
5
Celsius  ( Fahrenheit  32)
9
Friday, September 28, 2007
Computer Architecture I - Class 2
9
Informationsteknologi
Unconditional branching
j addr – jumps to the indicated address
and continues execution from there
 jr reg – jumps to the address stored in
the specified register and continues
execution from there

Friday, September 28, 2007
Computer Architecture I - Class 2
10
Informationsteknologi
Conditional branching






beq regsrc1,regsrc2,addr – branch to addr if regsrc1 equals
regsrc2
beqz reg,addr – branch to addr if reg equals 0
bne regsrc1,regsrc2,addr – branch to addr if regsrc1 does
not equal regsrc2
blt regsrc1,regsrc2,addr – branch to addr if regsrc1 is less
than regsrc2
The assembler will let the second operand be a
constant instead of a register if desired
There are many more – see Appendix B (page 146) of
Waldron
Friday, September 28, 2007
Computer Architecture I - Class 2
11
Informationsteknologi
Example programs
Program length.asm prints out the length
of a character string
 Program replace.asm replaces lower case
‘a’ with upper case ‘A’ in a string
 Study them and demo them

Friday, September 28, 2007
Computer Architecture I - Class 2
12
Informationsteknologi
In-class exercise

Write a program to count how many times
the letter ‘e’ appears in a string.
Friday, September 28, 2007
Computer Architecture I - Class 2
13