Difference between revisions of "CSC103 Homework 4 Fall 2012"

From dftwiki3
Jump to: navigation, search
(Problem #1)
(Problem #1)
Line 26: Line 26:
 
; data section with 2 variables
 
; data section with 2 variables
 
;
 
;
counter: 10
+
counter: 100
 
sum: 0
 
sum: 0
  
Line 62: Line 62:
 
Just to verify that the program works, copy/paste its code into the simulator (click [http://cs.smith.edu/~thiebaut/classes/103/applets.htm here] to get the applets).  Run the program by selecting the '' '''fastest speed''' '', and then clicking on '''Run'''.
 
Just to verify that the program works, copy/paste its code into the simulator (click [http://cs.smith.edu/~thiebaut/classes/103/applets.htm here] to get the applets).  Run the program by selecting the '' '''fastest speed''' '', and then clicking on '''Run'''.
 
;Question 1
 
;Question 1
 +
: How many instructions are executed by the processor to compute the sum?  In other words, from the time the processor executes the first '''jmp start''' instruction, to the time it executes '''hlt''', how many instructions will it have executed, including the first and last?    Be precise in your answer! 
 +
<br />
 +
 +
;Question 2
 +
:How do you modify the program to make it compute the sum of 0 to 100? 
 +
<br />
 +
 +
;Question 3
 +
:How many instructions are executed by the processor to compute the sum of 0 to 100?
 +
 +
;Question 4
 +
: Assume that the processor has a 3 GHz crystal giving it the frequency of operation and that each instruction takes 1 cycle to execute.
 +
In this case a cycle is 1 / 3,000,000,000 second.  How long does it take the program to compute the sum of all the numbers between 0 and 10?  Between 0 and 100?  Between 0 and 1,000,000?
 +
 +
;As a reminder,
 +
*0.001 sec = 1 ms (millisecond).
 +
*0.000001 sec = 1 us (microsecond).
 +
* 0.000000001 sec = 1 ns (nanosecond).
 +
 +
;

Revision as of 12:38, 11 October 2012

--D. Thiebaut 13:26, 11 October 2012 (EDT)


Page under construction!
UnderConstruction.jpg

Problem #1

Th program below computes the sum of all the numbers between 0 and 10. It is the final version of the program we developed in class on Thursday 10/11/12.

Note that I have added comments to the program. This helps make a very cryptic program easier to understand. In assembly language we can place comments in the code by preceding them with semicolons. The words following a semicolons are ignored by the translator when it takes the assembly-language program and puts the mnemonics in memory. If the comments bother you, you can simply put your cursor on each semicolon and remove the text on the right hand-side of it.

; Sum100 program
; D. Thiebaut
; Computes the sum of all the numbers between 0 and 10
; and stores the result in variable sum.
;

@0
       jmp start

;
; data section with 2 variables
;
counter: 100
sum: 0

;
; code section
; 
start:

; sum <- counter
	lod	counter
	sto	sum

; counter <- counter - 1
loop:
	lod counter
	dec
	sto	counter

; if counter is 0, then jump out of loop
	jmz done

; sum <- sum + counter
	lod sum
	add counter
	sto sum

; go back to compute new sum
	jmp	 loop

; if we reach this point, then we are done with
; the loop and sum should contain the result
done: hlt

Just to verify that the program works, copy/paste its code into the simulator (click here to get the applets). Run the program by selecting the fastest speed , and then clicking on Run.

Question 1
How many instructions are executed by the processor to compute the sum? In other words, from the time the processor executes the first jmp start instruction, to the time it executes hlt, how many instructions will it have executed, including the first and last? Be precise in your answer!


Question 2
How do you modify the program to make it compute the sum of 0 to 100?


Question 3
How many instructions are executed by the processor to compute the sum of 0 to 100?
Question 4
Assume that the processor has a 3 GHz crystal giving it the frequency of operation and that each instruction takes 1 cycle to execute.

In this case a cycle is 1 / 3,000,000,000 second. How long does it take the program to compute the sum of all the numbers between 0 and 10? Between 0 and 100? Between 0 and 1,000,000?

As a reminder,
  • 0.001 sec = 1 ms (millisecond).
  • 0.000001 sec = 1 us (microsecond).
  • 0.000000001 sec = 1 ns (nanosecond).