Difference between revisions of "CSC103 Homework3 Solutions, 2012"
(→Assembly Language) |
(→Assembly Language) |
||
Line 13: | Line 13: | ||
* There were several ways to write the program. Here's one below that uses different instructions. | * There were several ways to write the program. Here's one below that uses different instructions. | ||
* Importantly, you have to make sure that the address you specify for the data with the '''@''' symbol is '''above''' the address of the last instruction, which is a '''hlt''' instruction. If you do not, then your program overwrites the instructions at the end of your program and you have a program with a '''major''' bug on your hands! | * Importantly, you have to make sure that the address you specify for the data with the '''@''' symbol is '''above''' the address of the last instruction, which is a '''hlt''' instruction. If you do not, then your program overwrites the instructions at the end of your program and you have a program with a '''major''' bug on your hands! | ||
− | + | * Note: in the program below, whatever follows a semicolon is a comment, something that the processor will not execute! | |
+ | <br /> | ||
<code><pre> | <code><pre> | ||
; Assembly language program that initializes 10 variables with | ; Assembly language program that initializes 10 variables with |
Revision as of 14:16, 28 February 2012
--D. Thiebaut 14:11, 28 February 2012 (EST)
Wiki Page
General Comments:
- You had to answer the questions from the lab handout
- You had to use the different wiki features listed in the homework
- You had to write a paragraph for each main component found.
- If you closed up the PC at the end of the lab, you got extra credits in the form of 1/3 point that was added to the final grade (pink grade).
Assembly Language
- There were several ways to write the program. Here's one below that uses different instructions.
- Importantly, you have to make sure that the address you specify for the data with the @ symbol is above the address of the last instruction, which is a hlt instruction. If you do not, then your program overwrites the instructions at the end of your program and you have a program with a major bug on your hands!
- Note: in the program below, whatever follows a semicolon is a comment, something that the processor will not execute!
; Assembly language program that initializes 10 variables with
; a specific series of integers: 1, 3, 5, 7, 9, 11, 13, 15, 17, 19.
;
start: lod-c 1 ;AC <- 1
sto var1 ;var1 <- AC which is 1
add-c 2 ;AC <- AC + 2. AC now contains 3
sto var2 ;var2 <- AC, or 3
lod-c 5 ;AC <- 5
sto var3 ;var3 <- 5
add-c 2 ;AC <- 5+ 2 = 7
sto var4 ;var4 <- 7
inc ;AC <- AC + 1 = 8
inc ;AC <- AC + 1 = 9
sto var5 ;var5 <- 9
add-c 2 ;AC <- 11
sto var6 ;var6 <- 11
add-c 2 ;AC <- 13
sto var7 ;var7 <- 13
add-c 2 ;AC <- 15
sto var8 ;var8 <- 13
add-c 2 ;AC <- 17
sto var9 ;var9 <- 17
add-c 2 ;AC <- 19
sto var10 ;var10 <- 19
hlt ;program stops
@30
var1: data
var2: data
var3: data
var4: data
var5: data
var6: data
var7: data
var8: data
var9: data
var10: data
Timing Analysis
- If the processor runs at 3 GHz, it executes 3,000,000,000 cycles in 1 second.
- The processor executes 1 instruction each cycle
- The program above contains 22 instructions
- It will take the processor 22 cycles to execute our program
- In terms of time, this will be 22 * 1 sec / 3,000,000,000 = 22/3 10^-9 = 7 nanoseconds, approximately, or 7 billionth of a second.