# CSC103 2011 Homework 3 Solution

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

# Problem #3

```; Problem #3 ; Julia Fernandez ; (Edited by D. Thiebaut) ; Computes the sum of all the numbers between ; 1 and 10. ; The accumulator will find the sum of the numbers 1-10, ; beginning with ;10 and adding backwards (so 10+9+8…). Start: Lod-c 10  ; Store 10 to the location “Index” Sto Index Lod-c 0  ; Store 0 to the location “Sum” Sto Sum ; I will now create a loop that counts backwards from zero. ; As it counts down, it adds whatever number it’s on to the ; total at location “Sum”. ; Once the counter has reached zero, the program will stop. Loop: Lod Sum  ; Load data at address Sum into acc Add Index  ; Add data at address Index to Sum Sto Sum  ; Store result in Sum Lod Index  ; Load data at address Index into acc Dec  ; acc = acc-1 Jmz Done  ; If acc=0, then skip to address Done Sto Index  ; If acc does not equal 0, store number in acc in Index Jmp Loop  ; Jump to beginning of loop Done: HLT  ; If acc=0, program stops @15 Index: data Sum: 0 ```

# Problem #4

```; Problem #4 ; Sam Scharr ; (Edited by D. Thiebaut) ; This program computes the sum of all the even numbers ; between 0 and 10. Start: lod sum  ;initial sum = 0 add int  ;add integer, initial integer=2 sto sum  ;store sum lod int  ;load integer add-c 2  ;increase integer by 2 sto int  ;store new integer lod counter  ;load counter dec  ;decrement counter by 1 dec  ;decrement again (so, result is decrement by 2) sto counter  ;store new counter jmz done  ;when counter = zero, jump to done jmp start  ;if counter does not equal zero, jump to start Done: hlt  ;stop @15 sum: 0  ;this will contain the sum at the end of the program counter: 10  ;numbre of times we're going to loop times 2 int: 2 ```