Difference between revisions of "CSC103 2011 Homework 3 Solution"

From dftwiki3
Jump to: navigation, search
(Created page with "--~~~~ ---- =Problem #2= * Here's a nice solution provided by Sydney. It's short, works well, and is well documented <code><pre> ; Solution for Problem #2, Assignment 3 ; Sid...")
 
(Problem #2)
Line 1: Line 1:
 
--[[User:Thiebaut|D. Thiebaut]] 10:57, 25 February 2011 (EST)
 
--[[User:Thiebaut|D. Thiebaut]] 10:57, 25 February 2011 (EST)
 
----
 
----
 +
 +
=Problem #1=
 +
* Here are two options provided by Kristina.
 +
 +
===Solution 1===
 +
<code><pre>
 +
 +
; Kristina Fedorenko
 +
; Solution for Problem #1, Version 1
 +
; (Edited by D. Thiebaut)
 +
start:  lod var1
 +
        add var2
 +
        add var3
 +
        add var4
 +
        sto sum
 +
        hlt
 +
 +
@14
 +
var1:  10
 +
var2:  2
 +
var3:  45
 +
var4:  7
 +
sum:    0
 +
 +
 +
 +
 +
</pre></code>
 +
 +
===Solution 2===
 +
<code><pre>
 +
; Kristina Fedorenko
 +
; Solution for Problem #1, Version 2
 +
 +
start: lod sum;        ; load result from previous loop
 +
      add-i index      ; add to it the number at index
 +
      sto sum          ; store the result back
 +
 +
      lod index        ; increment the
 +
      add-c 1          ; index
 +
      sto index
 +
 +
      sub-c 18        ; loop condition check,
 +
      jmz stop        ; stop if index is 18
 +
      jmp start
 +
 +
stop:  hlt
 +
 +
; data
 +
@14
 +
var1:  10 ; 4 variables
 +
var2:  2
 +
var3:  45
 +
var4:  7
 +
sum:    0 ; will contain the sum of all 4 vars
 +
index:  var1    ; pointer to the variables. Starts by
 +
; pointing to var1
 +
 +
 +
 +
 +
</pre></code>
  
 
=Problem #2=
 
=Problem #2=

Revision as of 11:06, 25 February 2011

--D. Thiebaut 10:57, 25 February 2011 (EST)


Problem #1

  • Here are two options provided by Kristina.

Solution 1


; Kristina Fedorenko
; Solution for Problem #1, Version 1
; (Edited by D. Thiebaut)
start:  lod var1
        add var2
        add var3
        add var4
        sto sum
        hlt

@14
var1:   10
var2:   2
var3:   45
var4:   7
sum:    0




Solution 2

; Kristina Fedorenko
; Solution for Problem #1, Version 2

start: lod sum;         ; load result from previous loop
       add-i index      ; add to it the number at index
       sto sum          ; store the result back

       lod index        ; increment the
       add-c 1          ; index
       sto index

       sub-c 18         ; loop condition check,
       jmz stop         ; stop if index is 18
       jmp start

stop:  hlt

; data	
@14
var1:   10		; 4 variables
var2:   2
var3:   45
var4:   7
sum:    0		; will contain the sum of all 4	vars
index:  var1    	; pointer to the variables. Starts by
			; pointing to var1




Problem #2

  • Here's a nice solution provided by Sydney. It's short, works well, and is well documented
; Solution for Problem #2, Assignment 3
; Sidney Ness (edited by D. Thiebaut)
;
Start:  LOD-C 0		; initialize sum to 0
	STO sum

	LOD-C var       ; store	address	of var	
	STO next	; in next, used	as a pointer

Loop:   LOD-I next	; get data pointed to by next in acc
	JMZ Done	; if it	is 0, then stop
	ADD sum		; otherwise, add current sum to	acc
	STO sum		; store	back in	sum

	LOD next	; increment pointer next
	INC
	STO next

	JMP Loop	; keep on looping until	we're done


Done:   HLT 		; we're	done!

next:   data		; pointer to array of 10 numbers
sum:    data		; will be our sum
var:    1		; the numbers to add
        2
        3
        4
        5
        6
        7
        8
        9
        10
        0		; special marker.  When	loaded in acc
			; the program knows we're done.


<code>