Assembly Language - Kalamazoo College

Download Report

Transcript Assembly Language - Kalamazoo College

Assembly Language
Friday, Week 5
Monday, Week 6
Assembly Language
 Set of mnemonic names for the instructions
in a particular computer's machine language.
 Works on accumulator and memory
locations in the computer.
 Translated into binary instructions.
Pippin
LOD #X
Store accumulator value in memory
location X
Load contents of memory location X
into accumulator
Load value X into accumulator
HLT
Halt execution
ADD X
Add contents of memory location X to
accumulator
ADD #X
Add value X to accumulator
STO X
LOD X
Pippin
 Pippin has an accumulator - a place to
store intermediate values during
computation.
 Similar to the calculator but we have
memory locations to store values and
to load values.
Sample Program
LOD #2
STO 129
ADD 129
STO 129
ADD #3
STO 130
HLT
Exercise
 What would be the
assembly
instructions to add 1
to the contents of
memory location
130?
 STO X
Store acc
value in mem loc X
 LOD X
Load contents
of mem loc X into acc
 LOD #X
Load value X
into acc
 HLT Halt execution
 ADD X
Add contents
of mem loc X to acc
 ADD #X
Add value X to
acc
Exercise Solution
LOD #1
ADD 130
STO 130
HLT
Exercise
 What would be the
assembly language
instructions to add
the values in
memory locations
129 and 132,
putting the answer
in 128?
 STO X
Store acc
value in mem loc X
 LOD X
Load contents
of mem loc X into acc
 LOD #X
Load value X
into acc
 HLT Halt execution
 ADD X
Add contents
of mem loc X to acc
 ADD #X
Add value X to
acc
Exercise Solution
LOD 129
ADD 132
STO 128
HLT
Machine Language
 Assembly language still cannot be read
directly by the computer - it’s not in
binary.
 Assembly language commands need
to be translated into binary commands
called machine language.
Pippin Machine Language
LOD X
00000100
LOD #
ADD X
ADD #
STO
HLT
Memory location 129
00010100
00000000
00010000
00000101
00001111
10000001
Memory location 130
10000010
Example Program
LOD 129
00000100 10000001
ADD #3
00001000 00000011
STO 129
00000101 10000001
HLT
00001111
Exercise
LOD X
ADD Y
STO Y
HLT
LOD X
LOD #
ADD X
ADD #
STO
HLT
00000100
00010100
00000000
00010000
00000101
00001111
Translate
above into
machine
language.
Memory
location X
Memory
location Y
10000001
10000010
Exercise Solution
LOD X
ADD Y
STO Y
HLT
00000100
00000000
00000101
00001111
10000001
10000010
10000010
Exercise
Write an
assembly
program that
calculates
Y=X+3.
LOD X
LOD #
ADD X
ADD #
STO
HLT
00000100
00010100
00000000
00010000
00000101
00001111
Translate the
program into
machine
language.
Memory
location X
Memory
location Y
10000001
10000010
Exercise Solution
LOD X
ADD #3
STO Y
HLT
00000100
00010000
00000101
00001111
10000001
00000011
10000010
PIPPIN Lab
 This week’s lab will be to use a
simulator called PIPPIN to write
assembly language programs and
change them to machine language.
 Let’s take a look at PIPPIN.
 Do Pre-Lab Assignment
JMP
 All commands seen so far in PIPPIN
are sequential.
 We have no way to make a decision or
to skip some statements.
 JMP X command says always jump to
the command labeled X.
 JMZ X checks the accumulator first - if
it’s 0 then we jump; otherwise don’t
jump.
Example
LOD X
LOD #3
SUB #1
STO X
STO X
LOD #0
JMZ END
STO Z
JMP LOOP
LOOP:
LOD Z
END:
LOD Z
ADD Y
STO Y
STO Z
HLT
In JavaScript
 The same program in JavaScript would
be the following:
var z=0;
for (var x=3; x!=0; x--)
z += y;
y = z;
 Or the following:
y = y*3;