Uploaded by crosby.71

Chapter06 machine assembly alg

advertisement
QUIZ Pipelining
A computer pipeline has 4 processors, as shown above.
Each processor takes 15 ms to execute, and each
instruction must go sequentially through all 4 processors.
A program has 10 instructions. Calculate how long it takes
to run it:
• without pipelining
• with pipelining
1
Extra-credit QUIZ
2
Low-level software
Components

Circuits

Gates

Transistors

Abstractions and more abstractions …
You are here
4
6.1 Computer Operations
Computer = programmable electronic device
that can store, retrieve, and process data
Von Neumann architecture:
• Data and instructions to manipulate the data are
represented in the same way (binary) and are stored
in the same place (memory)
• For processing, both data and
instructions have to be brought
into the CPU (fetch-execute cycle)
5
6.2 Machine Language
Machine language = The language made up of
binary coded instructions built into the hardware of a
particular computer and used directly by the
computer
Why would anyone use machine language?
(Hint: they had no choice. Why?)
Image source: http://www.alpcentauri.info/chapter_18.html
6
Remember: The Fetch-Execute Cycle
According to the CPU’s
machine language
7
Characteristics of machine language:
– 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
– Each machine-language instruction does only one
very low-level task
8
Pep/8 Virtual Computer
Virtual computer
A hypothetical machine designed to contain the
important features of a real machine
Pep/8
A virtual computer designed by Stanley Warford
that has 39 machine-language instructions
(We’re going to cover only a few of them!)
9
Extra-credit
10
Pep/8 Registers
– 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 (register A)
The memory unit is made up of 65,636 Bytes of storage
Can you figure out how
long the Pep/8 address is?
11
QUIZ
The previous version of Pep, Pep/7, could use
only 12 bits for memory addresses.
How many Bytes of memory could Pep/7
address?
12
24
bits
16 bits
Explain the
address format!
13
Can you show what
instructions look like
in memory?
Explain the
address format!
14
Instruction Format
15
Instruction Format
Operation code, a.k.a. opcode
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:
• Direct
Say that
• Immediate
again?!?
16
Instruction Format
Addressing-mode specifier
Says how to interpret the operand part of the
instruction:
• Direct
• Immediate
??
2+3
A+B
Immediate
Direct
17
Immediate and direct addressing
modes
18
Immediate and direct addressing
modes
Example:
ADD 42 to accumulator A
What exactly am I to add?
19
Instruction Format
Addressing modes:
• immediate
• direct
Is there something we are not telling you
about Pep’s addressing modes?
20
PEP/8 machine
instructions
21
What does this instruction mean, what is
its hex code, and what exactly does it do?
22
What does this instruction mean, what is
its hex code, and what exactly does it do?
23
What do these instructions mean, what are
their hex codes, and what exactly do they do?
24
Wait a second ...
25
Conclusions
It is useless to write operands into IR.
IR should be written only in the FETCH stage of
the Fetch-Execute cycle, when the 3 bytes of
the instruction are brought from memory.
Operands can be written only to:
• Accumulator
• Memory
Some instructions cannot have the immediate
addressing mode
EOL 1
26
QUIZ
• Name all the 4 parts of the “fetch-execute”
cycle.
• What do IR, A, and PC stand for in the
computer’s architecture?
• Name and explain the 2 addressing modes
we’ve covered.
27
QUIZ: Immediate and direct addressing
modes
SUB 30 from accumulator A
What exactly am I to
subtract?
28
What do these instructions mean, what are
their hex codes, and what exactly do they do?
29
What does this instruction mean, what is
its hex code, and what exactly does it do?
Why is there only one on this page?
What do these instructions mean, what are
their hex codes, and what exactly do they do?
31
QUIZ
• Name all the 4 parts of the “fetch-execute”
cycle.
• What do IR, A, and PC stand for in the
computer’s architecture?
• Name and explain the 2 addressing modes
we’ve covered.
32
Immediate and direct addressing
modes
We have this Pep
instruction:
LOAD 20 (decimal) into
accum. A
What exactly am I to load?
33
Problem 16 / 189
The PEP/8 memory has the following contents:
0001 A2
0002 11
0003 00
0004 FF
What are the contents of reg. A after this instruction
is executed:
C1 00 01
34
0001
0002
0003
0004
A2
11
00
FF
Instruction
executed:
C1 00 01
35
Problem 17 / 190
The PEP/8 memory has the following contents:
0001 A2
0002 11
0003 00
0004 FF
What are the contents of reg. A after this instruction
is executed:
C1 00 02
The first step is …
36
Problem 17 / 190
The PEP/8 memory has the following contents:
0001 A2
0002 11
0003 00
0004 FF
What are the contents of reg. A after this instruction
is executed:
C1 00 02
1100 0001 0000 0000 0000 0010
37
6.3 Program to write "Hello"
Every program ends
with this!
38
Hand Simulation
0 0 0 0
What is the fetch/execute cycle?
How much is the PC incremented?
0000
0001
0002
0003
What ASCII
character is this?
50
00
48
50
39
Hand Simulation
0 0 0 0
What is the fetch/execute cycle here?
What ASCII
character is this?
40
Your turn!
What does this program do?
1111
0000
1 0000
1111
Steps for executing a
machine-language
program
Machine
code
program
in a file
on disk
Loader
Execute
42
Program
in
memory
SKIP Pep/8 Simulator
EOL 243
Problem 33 / 191
The PEP/8 memory has the following program in
memory (in hex):
0001
0002
0003
0004
0005
0006
0007
49
00
08
51
00
08
00
Convert the program to binary and
explain in your own words what it does.
44
Fact: Writing programs in machine
language sucks!
(i.e. it is time-consuming, boring, errorprone, unintuitive, etc.)
45
… that’s why they invented
assembly language
46
6.4 Assembly Language
Assembly language
A language that uses mnemonic codes to
represent machine-language instructions
Assembler
A program that reads each of the instructions in
mnemonic form and translates it into the
machine-language equivalent
47
Steps for executing an
assembly-language program
Loader
Execute
48
Program
in
memory
Pep/8 Assembly Language
Opcode
is 04
Opcode
is 31
Opcode
is 38
Opcode
is 39
49
“Hello” program in assembly
mnemonic
CHARO
CHARO
CHARO
CHARO
CHARO
STOP
.END
50
operand
0x0048,
0x0065,
0x006C,
0x006C,
0x006F,
addressing
mode
comments
i ;Outputs character 'H'
i
i
i
i
What in the
world is this?!
A New Program
Problem: Read and sum three
values and print the sum
How would you do it by hand?
51
Declaring variables in assembly:
We simply reserve space in memory
for them!
Labels – they are just
placeholders for
memory
addresses
52
Assembler directives, a.k.a.
pseudo-ops
What is the difference between
operations and pseudo operations?
53
Completed Program
sum:
num1:
num2:
num3:
main:
.WORD
.BLOCK 2
.BLOCK 2
.BLOCK 2
LDA sum,d
DECI
ADDA
DECI
ADDA
DECI
ADDA
STA
DECO
STOP
.END
0x0000
num1,d
num1,d
num2,d
num2,d
num3,d
num3,d
sum,d
sum,d
54
Completed Program
Houston, we
have a problem!
How does the
CPU know that
the program
starts here?
sum:
num1:
num2:
Num3:
main:
.WORD
.BLOCK 2
.BLOCK 2
.BLOCK 2
LDA sum,d
DECI
ADDA
DECI
ADDA
DECI
ADDA
STA
DECO
STOP
.END
0x0000
num1,d
num1,d
num2,d
num2,d
num3,d
num3,d
sum,d
sum,d
55
Solution: “Branch” instruction
sum:
num1:
num2:
num3:
main:
BR
main
.WORD
.BLOCK 2
.BLOCK 2
.BLOCK 2
LDA sum,d
DECI
ADDA
DECI
ADDA
DECI
ADDA
STA
DECO
STOP
.END
0x0000
num1,d
num1,d
num2,d
num2,d
num3,d
num3,d
sum,d
sum,d
See comments on
56
next slide
Unconditional
branch!
57
Completed Program
Your turn! Change the program so it adds
only two numbers: always 7 + 42
58
We have covered sections 6.1, 6.2, 6.3, and part
of 6.4.
• Read the text carefully and make sure you can
explain in your own words what each
instruction accomplishes.
Individual work (to do in notebook for next time):
16, 17, 19, 21-26
EoL4
59
QUIZ: Write an assembly program to
subtract 2010 from 4210 and put the result
in memory
BR
main
Take inspiration
from the
program we
studied last time:
sum:
num1:
num2:
num3:
main:
.WORD
.BLOCK 2
.BLOCK 2
.BLOCK 2
LDA
sum,d
DECI
ADDA
DECI
ADDA
DECI
ADDA
STA
DECO
STOP
.END
0x0000
num1,d
num1,d
num2,d
num2,d
num3,d
num3,d
sum,d
sum,d
EOL
60
Decision-making instructions
BR
Set PC to operand unconditionally
BRLT
i
Set PC to operand if A < 0
BREQ
i
Set PC to operand if A = 0
61
Decision making problem:
Same as previous “sum” program, but print
the sum only if positive or zero; if negative,
print an error message
negMsg: CHARO
BR
main:
LDA
…
BRLT
STA
DECO
finish:
STOP
0x0045,i
finish
sum,d
What ASCII code
is this?
negMsg
sum,d
sum,d
62
Decision making problem:
Same as before, but print the sum only if
positive or zero; if negative, print the letter
‘E’ (Error)
ASCII code for 'E'
negMsg: CHARO
BR
main:
LDA
…
BRLT
STA
DECO
finish:
STOP
0x0045,i
finish
sum,d
negMsg
sum,d
sum,d
How many ways are there to reach finish?
QUIZ: What does this program do?
BR main
a:
.BLOCK 2
main: DECI
a, d
LDA
a, d
SUBA
0x002A, i
STA
a, d
DECO
a, d
STOP
.END
64
QUIZ: What does this program do?
BR main
a:
.BLOCK 2
main: DECI
a, d
LDA
a, d
SUBA
0x002A, i
STA
a, d
BREQ
yes
DECO
a, d
ASCII code for 'F'
fin:
STOP
yes: CHARO 0x0046, i
BR
fin
.END
65
QUIZ: Would the decision program from the first
example still work if the negMsg block were
placed after the main program instead of before?
main:
finish:
negMsg:
LDA
…
BRLT
STA
DECO
STOP
sum,d
CHARO
BR
0x0045,i
finish
negMsg
sum,d
sum,d
66
What does this program do? (p.173)
CPA must
always be
followed by a
conditional
branch!
67
QUIZ: PEP Assembly
Write a program that adds the number 3 to a
number entered by the user, and prints the
result if equal to zero, otherwise it prints
nothing.
68
QUIZ: PEP Assembly
Write a program that adds the number 3 to a
number entered by the user, and prints the
result if less than zero, otherwise it prints
nothing.
69
QUIZ: PEP Assembly
Write a program that adds the number 3 to a
number entered by the user, and prints the
result if greater than zero, otherwise it prints
nothing.
70
High-level software (Ch.9)
Algorithms (and data structures)
Low-level software

Components

Circuits

Gates

Transistors

6.5 Algorithms and Pseudocode
Algorithm = A sequence of steps for solving a
problem
Muḥammad ibn Mūsā al-Khwārizmī (780-850A.D.)
72
Remember: Decision-making
instructions
BR
Set PC to operand unconditionally
BRLT
i
Set PC to operand if A < 0
BREQ
i
Set PC to operand if A = 0
73
Not in text
How to describe an algorithm in an
intuitive way?
Flowcharts!
We use decision-making instructions to build:
• branches
• loops
74
Problems with flowcharts:
Not in text
• They’re hard to follow when they get complex
75
Problems with flowcharts:
Not in text
• They’re hard to follow when they get complex
• They’re hard to draw in electronic documents
76
Problems with flowcharts:
Not in text
• They’re hard to follow when they get complex
• They’re hard to draw in electronic documents
Our text uses only
pseudocode
77
6.5 Algorithms and Pseudocode
Pseudocode = A mixture of English and
formatting to make the steps in an algorithm
explicit
There are no syntax rules in pseudocode!
Pseudocode is not case sensitive!
Example: Repeated-division algorithm (convert base-10
number to other bases):
While ( the quotient is not zero )
Divide the decimal number by the new base
Make the remainder the next digit to the left in the answer
Replace the original decimal number with the quotient
78
Algorithms can also be described in
natural language!
79
… but pseudocode is more precise
IF concerned about cholesterol
Put butter substitute in a pot
ELSE
Put butter in a pot
Turn on burner
Put pot on the burner
WHILE (NOT bubbling)
Leave pot on the burner
Put other ingredients in the blender
Turn on blender
WHILE (more in pot)
Pour contents into lender in slow steam
Turn off blender
80
Draw the flowchart for this
pseudocode
IF concerned about cholesterol
Put butter substitute in a pot
ELSE
Put butter in a pot
Turn on burner
Put pot on the burner
WHILE (NOT bubbling)
Leave pot on the burner
Put other ingredients in the blender
Turn on blender
WHILE (more in pot)
Pour contents into lender in slow steam
Turn off blender
81
Pseudocode functionality
Pseudocode has all of the concepts encountered
in any high-level programming language, only
the syntax is informal:
– Variables
– Assignment
– I/O
– Selection / decision
– Repetition / loop
– Boolean expressions
82
To do for next time
Read pp.175-179 of the text, referring to your
Python experience
83
We can test a pseudocode algorithm w/pencil &
paper, a.k.a. “desk checking”
While ( the quotient is not zero )
Divide the decimal number by the new base
Make the remainder the next digit to the left in the answer
Replace the original decimal number with
What is 93 in base 8?
93/8 gives 11 remainder 5
11/8 gives 1 remainder 3
1/ 8 gives 0 remainder 1
answer
135
84
Organizing the solution in a computer-like way gives us
better idea of what is required for the computer to
execute it, e.g. two numbers need to be entered, etc.
85
QUIZ: Desk-check the repeated division algorithm
with decimalNumber = 242, and newBase = 8
86
Answer: 362
87
Translating a pseudocode algorithm
How we translate depends on the
language into which we are translating!
The text example (pp.184-5) is with
translation into PEP assembly, but in class
we’re translating the repeated division alg.
into Python!
88
Develop this code step-by-step!
89
SKIP 6.6 Testing
90
Read and take notes in notebook:
Software Piracy and Copyrighting
Have you every "borrowed" software
from a friend?
Have you ever "lent" software to a
friend?
Did you know that about 100,000 jobs are
lost in the US every year due to such
"borrowing" and "lending?"
91
Chapter Review Questions
• List the operations that a computer can
perform
• Describe the important features of the Pep/8
virtual machine
• Distinguish between immediate addressing
mode and direct addressing mode
• Write a simple machine-language program
• Distinguish between machine language and
assembly language
92
Chapter Review Questions
• Describe the steps in creating and running an
assembly-language program
• Write a simple program in assembly program
• Distinguish between instructions to the
assembler (a.k.a. directives) and instructions
to be translated into machine code (a.k.a.
executable instructions)
• Distinguish between following an algorithm
and developing one
93
Chapter Review Questions
• Describe the pseudocode constructs used in
expressing an algorithm
• Use pseudocode to express and algorithm
• Distinguish between black-box and clear-box
testing
94
Homework
Due Friday, Apr. 8
End of chapter exercises
10, 11, 12, 13, 14, 15
18, 20, 27, 34, 36, 41
Correction in 20: use E1 instead of E0
Hint for 34: machine code 31 means decimal input
Hint for 41: How are integers represented in Pep/8?
44, 45
All PEP instructions, with machine codes
00
04
08
0A
31
38
39
49
50
51
70
71
80
81
C0
C1
E1
Stop
Branch unconditional
Branch if Less Than
Branch if equal
Decimal Input Direct
Decimal Output Immediate
Decimal Output Direct
Char. Input Direct
Char. Output Immediate
Char. Output Direct
Add to A Immediate
Add to A Direct
Subtract from A Immediate
Subtract from A Direct
Load into A Immediate
Load into A Direct
Store A Direct
STOP
BR
BRLT
BREQ
DECI
DECO
DECO
CHARI
CHARO
CHARO
ADDA
ADDA
SUBA
SUBA
LDA
LDA
STA
96
Download