; Program to multiply two numbers ; Fritz and 353 class (28 Sep 2006) READ R0,DD ; R0 = multipli-ee READ R1,DD ; R1 = multiplier DATA #skip ; set up J0 for skipping ADD COPY DR,J0 DATA #multi ; set up J1 for looping COPY DR,J1 ZERO R2 ; R2 = total DATA 1 ; mask bit #multi COPY DR,R3 ; ... in R3 AND R1,R3 ; mask out rightmost bit of R1 JPIF R3,EZ,J0 ; don't add if bit was 0 ADD R0,R2 ; increase running total (bit was 1) #skip SHIFT R0,-1 ; double the m'ee SHIFT R1,1 ; drop least sig bit of m'er JPIF R1,NZ,J1 ; loop back when m'er is > 0 WRITE R2,DD ; print out the answer HALT ; HEX listing: ; C00 C10 30C 9EA 308 9EB 120 301 9E3 813 E38 602 508 510 E1D D20 000