// This file is part of www.nand2tetris.org // and the book "The Elements of Computing Systems" // by Nisan and Schocken, MIT Press. // File name: projects/04/Mult.asm // Multiplies R0 and R1 and stores the result in R2. // (R0, R1, R2 refer to RAM[0], RAM[1], and RAM[2], respectively.) // // This program only needs to handle arguments that satisfy // R0 >= 0, R1 >= 0, and R0*R1 < 32768. // Put your code here. // variable names are selfexplanatory // itr temporary register at RAM[16] @R2 M=0 @itr M=0 // loop declaration // D = R1 - itr // if 0 jump to @STOP // else continue (LOOP) @itr D=M @R1 D=D-M @END D;JEQ // R2 = R0 + R2 // itr = itr + 1 @R0 D=M @R2 M=D+M @itr M=M+1 // back to loop declaration @LOOP 0;JMP // loopy loop (END) @END 0;JMP