program multiplication include '/home/dbarker/182/examples/Driver' ; ; Lab 4 - simulate multiplication ; ; ; ; Patrick Tuckey ; Grant Palin ; 2003-01-22 ; BIT15 equ 0b1 ; used for testing if bit one is on for any binary number sumAddrOffset equ -4 ; distance back from FP paramAOffset equ -6 ; distance back from FP paramBOffset equ -8 ; distance back from FP data ENTER db LF, CR, 0 ; short for creating a new line RESULT db ? code multiplication ; Program entry point stack 60; call Driver sys EXIT multiply push fp ; save caller's FP mov sp, fp ; copy sp (preamble) push r5 push r6 push r8 push r9 lodw paramAOffset, fp, r5 ; load value of first number from stack lodw paramBOffset, fp, r6 ; load value of second number from stack lodw sumAddrOffset, fp, r9 ; load address to store result from stack mov r0, r8 ; r8 set SUM to zero NUMBERCRUNCH cmp r6, 0 be OUT ;test rightmost bit in r6 to see if we add NUMA to SUM test r6, BIT15 bz NOADD add r5, r8, r8 bc NOSTORE NOADD shr r6, 1, r6 bz OUT shl r5, 1, r5 bc NOSTORE br NUMBERCRUNCH OUT stow 0, r9, r8 NOSTORE pop r9 pop r8 pop r6 pop r5 pop fp ret end