0 jmp 0 23 jump to 23, start of main 1 jmp 0 2 jump to 2, start of mult 2 inc 0 7 increment stack register by 7, secure space for overhead, x, y, z, and w 3 lod 0 3 load x, x is a formal parameter of call by value type 4 lit 0 0 load literal 1 5 opr 0 12 perform x>0? 6 jpc 0 20 if false, jump to 20, end of if statement 7 lod 0 3 load x 8 lit 0 1 load literal 1 9 opr 0 3 perform x-1 10 lod 0 4 load y, y is a formal parameter of call by value type 11 lda 0 6 load address of w, w is a formal parameter of call by address type 12 stp 0 0 store stack top to address of 3 words ahead, this is actual parameter &w 13 stp 0 0 store stack top to address of 3 words ahead, this is actual parameter y 14 stp 0 0 store stack top to address of 3 words ahead, this is actual parameter x-1 15 cal 1 2 call mult, this is a recursive call 16 lod 0 6 load w 17 lod 0 4 load y 18 opr 0 2 perform w+y 19 sto 0 6 store stack top to w 20 lod 0 6 load w 21 sid 0 5 store indirectly stack top to address given by z, z is parameter of call by address 22 opr 0 0 return to the address next to the calling point 23 inc 0 6 increment stack register by 6, secure space for overhead, a, b, and w 24 lit 0 3 load literal 3 25 sto 0 3 store stack top to a 26 lit 0 5 load literal 5 27 sto 0 4 store stack top to b 28 lod 0 3 load a 29 lod 0 4 load b 30 lda 0 5 load address of w 31 stp 0 0 store stack top to address of 3 words ahead, this is actual parameter &w 32 stp 0 0 store stack top to address of 3 words ahead, this is actual parameter b 33 stp 0 0 store stack top to address of 3 words ahead, this is actual parameter a 34 cal 0 2 call mult from main, note the difference from the call at 15 35 lod 0 5 load w 36 wrt 0 0 write w 37 opr 0 0 return to operating system