// 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. @R2 //Ergebnisspeicher M=0 //init @R1 //R1 dieser Wert dient als Schleifencounter D=M //Inhalt nach M @i //Zähler M=D //i bekommt R1-Wert @END D;JEQ (LOOP) @R0 //R0 ansprechen D=M //Wert aus R0 in Datenspeicher @R2 //Ergebnisspeicher M=D+M //Ergebnisspeicher = Datenspeicher + Ergebnisspeicher @i //Zähler D=M //D=Zähler D=D-1 //D-1 M=D //Zurückschreiben in Zähler @LOOP //LOOP D;JGT //D GRÖSSER (END) //END LOOP @END 0;JMP