CSC103 2011 Homework 3 Solution

From dftwiki3
Revision as of 11:06, 25 February 2011 by Thiebaut (talk | contribs) (Problem #2)
Jump to: navigation, search

--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>