Transcript Chapter06

Chapter 6
Low Level Programming
and Psuedocode
Chapter Goals - The BIG slices
• PIECE UNO: How a software works at the
lowest possible level
• PIECE DOS: How algorithms are created using
psuedocode
2
Chapter Goals – Smaller Slices
• operations that a computer can perform
• the Pep/8 virtual machine
• immediate addressing mode
direct addressing mode
• machine language and assembly language
3
Chapter Goals – Smaller Slices
• Low-level algorithms
• Using pseudocode to express and algorithm
• Pseudocode functionality (what can it do?)
• Translate a simple pseudocode algorithm into
assembly language
4
Some Definitions
Machine Code:
A binary code that tells the machine to do a particular instruction
Assembly Language
Uses “mnemonic” codes for instructions rather than “binary” codes.
Example: “Add” instead of “0111”
Pseudocode
Shorthand English-like language people use to express algorithms
(Each uses various levels of detail)
5
THE WHOLE
CHAPTER IN 4 SLIDES
Brought to you by…
6
SLIDE 1: What can Pep8 DO??
• Pep8 can do simple things like:
– Get characters from the keyboard
– Write characters to the screen
– Get numbers from the keyboard
– Write numbers to the screen
– Add numbers
– Store numbers to RAM
– Jump around in the program
– Etc…
7
SLIDE 2: A Pseudocode algorithm
Step 1)
Step 2)
Step 3)
Step 4)
Step 5)
Step 6)
Write an ‘H’ character to the screen
Write an ‘e’ character to the screen
Write an ‘l’ character to the screen
Write an ‘l’ character to the screen
Write an ‘o’ character to the screen
Stop
8
SLIDE 3: The Pep8 Assembly
CHARO
CHARO
CHARO
CHARO
CHARO
STOP
.END
0x0048,i
0x0065,i
0x006C,i
0x006C,i
0x006F,i
;Output an 'H'
;Output an 'e'
;Output an 'l'
;Output an 'l'
;Output an 'o'
;Tell Pep8 to stop
;Tell Assembler to stop
9
SLIDE 4: Assembled…
Assembly code is translated into binary for the
machine.
CHARO
0x0048,i ;Output an 'H'
Becomes…
500048
Which is really..
0101 0000
0000 0000 0100 1000
10
Algorithm, Assembly, and Machine
Code
11
Pseudocode
Pseudocode
A way of expressing algorithms using English
phrases and indention to make the steps in
the solution explicit
Example:
Step 1 ) Write an ‘H’ character to the screen
Etc…
12
Assembly Language
Assembly language
Uses mnemonic codes to represent machinelanguage instructions
Example:
CHARO
Instead of…
500048
0x0048,i
13
Machine Language
Machine language
Binary coded instructions built into the hardware
Circuits made of gates perform these instructions
Why would anyone choose to use machine language?
(Hint: they had no choice. Why?)
14
Machine Language
Characteristics of machine language:
– Each machine-language instruction does only one
very low-level task
– Every processor type has its own set
of specific machine instructions
– The relationship between the processor and the
instructions it can carry out is completely
integrated
15
An Assembler
Assembler
A program that translates assembly code into
machine code
16
More fun with
Assembly
17
Pep/8 Virtual Computer
Virtual computer
A hypothetical machine designed to contain the
important features of a real computer that we
want to illustrate
Pep/8
A virtual computer designed by Stanley Warford
that has 39 machine-language instructions
No; we are not going to cover all of them!
18
Pep/8 Assembly Language
Remember
the
difference
between
immediate
and
direct
addressing?
i : immediate
d: direct
19
Pep/8 Assembly Language
What is the difference between
operations and pseudo operations?
20
Pep/8 Assembly Language
Our Assembly Code for "Hello"
21
Assembly Process
22
Pep/8 Assembly Language
Our Assembly Code for "Hello“ … With Machine Code
23
Now that we have
some Pep8
vocabulary, we can
write some more
algorithms!
24
A New
Program
Problem:
Add 3 numbers
25
Pseudocode for Add 3 numbers
Step 1) load the sum (0) to the accumulator
Step 2) Read first number from the keyboard
Step 3) Add first number to the accumulator
Step 4) Read second number from the keyboard
Step 5) Add second number to the accumulator
Step 6) Read third number from the keyboard
Step 7) Add third number to the accumulator
Step 8) Store accumulator back to the sum
Step 9) Display the sum
Step 10) Stop
26
Our Completed Program
sum:
num1:
num2:
num3:
main:
BR
.WORD
.BLOCK 2
.BLOCK 2
.BLOCK 2
LDA
DECI
ADDA
DECI
ADDA
DECI
ADDA
STA
DECO
STOP
.END
main
0x0000
sum,d
num1,d
num1,d
num2,d
num2,d
num3,d
num3,d
sum,d
sum,d
27
More About
Pseudocode
We need to express more complicated
algorithms
Like Washing our Hair
28
A Algorithm for Hair
Step 0:
Step 1:
Step 2:
Step 3:
Step 4:
Step 5:
Wet Hair
Apply shampoo
Lather
Rinse
If (Hair not clean enough) goto Step 1
Done
29
Pseudocode
With Pseudocode we can express…
Individual steps
As Well as Structure…
Repetition
Selection
30
Pseudocode Functionality
Repetition
Repeating a series of statements
Set count to 1
WHILE ( count < 10)
Write "Enter an integer number"
Read aNumber
Write "You entered " + aNumber
Set count to count + 1
How many values were read?
31
Pseudocode Functionality
Selection
Choose to execute one statement (or group of statements) or
another statement (or group of statements)
IF ( age < 12 )
Write "Pay children's rate"
Write "You get a free box of popcorn"
ELSE IF ( age < 65 )
Write "Pay regular rate"
ELSE
Write "Pay senior citizens rate"
32
Another
Program
Problem:
Sort pairs of numbers
33
Pseudocode Example
Problem: Read in pairs of positive numbers and print
each pair in order.
WHILE (not done)
Write "Enter two values separated by blanks"
Read number1
Read number2
Print them in order
34
Pseudocode Example
How do we know when to stop?
Let the user tell us how many
Print them in order?
If first number is smaller
print first, then second
If first number if larger
print second, then first
35
Pseudocode Example
Write "How many pairs of values are to be entered?"
Read numberOfPairs
Set numberRead to 0
WHILE (numberRead < numberOfPairs)
Write "Enter two values separated by a blank; press return"
Read number1
Read number2
IF(number1 < number2)
Print number1 + " " + number2
ELSE
Print number2 + " " number1
Increment numberRead
36
Our Completed Program
BR
mesg1:
mesg2:
numRead:
numPairs:
number1:
number2:
Main
.ASCII
.ASCII
.WORD
.BLOCK
.BLOCK
.BLOCK
"Enter number\x00"
"Enter pairs\x00"
0x00
2
2
2
Main:
STRO
DECI
mesg1, d
numPairs, d
Begin:
STRO
DECI
DECI
LDA
CPA
BRLE
BR
mesg2, d
number1,
number2,
number1,
number2,
less
greater
test:
LDA
ADDA
STA
CPA
BRLT
BR
numRead, d
1, i
numRead, d
numPairs, d
Begin
End
less:
DECO
DECO
BR
number1, d
number2, d
test
greater:
DECO
DECO
BR
number2, d
number1, d
test
End:
STOP
.END
d
d
d
d
Focus on the
structure
37
The Data Section
mesg1:
mesg2:
numRead:
numPairs:
number1:
number2:
.ASCII
.ASCII
.WORD
.BLOCK
.BLOCK
.BLOCK
"Enter number\x00"
"Enter pairs\x00"
0x00
2
2
2
38
A Code Section
Begin:
STRO
DECI
DECI
LDA
CPA
BRLE
BR
mesg2, d
number1,
number2,
number1,
number2,
less
greater
d
d
d
d
39
Let’s get Bitty
40
Architecture of Pep8
Pep/8 Registers/Status Bits Covered
– The program counter (PC) (contains the address
of the next instruction to be executed)
– The instruction register (IR)
(contains a copy of the instruction being executed)
– The accumulator (A register)
The memory unit is made up of 65,636 bytes of
storage
41
Architecture of Pep/8
Figure 6.1 Pep/8’s Architecture
42
Instruction Format
Figure 6.2 Pep/8 Instruction Format
43
Instruction Format
Operation code
Specifies which instruction is to be carried out
Register specifier
Specifies which register is to be used (only use A in this
chapter)
Addressing-mode specifier
Says how to interpret the operand part of the
instruction
44
Instruction Format
Figure 6.3 Difference between immediate addressing mode and
direct addressing mode
45
Instruction Format
Is there something we are not telling you
about the addressing mode specifier?
How can you tell?
46
Some Sample Instructions
Figure 6.4 Subset of Pep/8 instructions
47
Sample Instructions
What do these instructions mean?
48
Sample Instructions
What do these instructions mean?
49
Sample Instructions
What do these instructions mean?
50
Sample Instructions
What do these instructions mean?
Why is there only one on this page?
51
Sample Instructions
What do these instructions mean?
52
Written Algorithm of Hello
53
Hand Simulation
What is the fetch/execute cycle?
How much is the PC incremented?
54
Hand Simulation
What is the fetch/execute cycle here?
55
Pep/8 Simulator