Difference between revisions of "CSC103 Homework3 Solutions, 2012"

From dftwiki3
Jump to: navigation, search
(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 15: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.