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;