|
Sorry, I'm sure this kind of things gets posted a lot.
Mult.asm
// 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.)
// 2, 3
// Put your code here.
// bail early
@R2
M = 0
@R0
D = M
@END
D;JEQ
@R1
D = M
@END
D;JEQ
@R1
D = M
@i
M = D // set up counter - count down from R1
(LOOP)
@R0
D = M
@R2
M = M + D
@i
M = M - 1
@i
D = M
@loop
D;JEQ
@end
D;JMP
(END)
@end
0;JMP
OUTPUT
| RAM[0] | RAM[1] | RAM[2] |
| 0 | 0 | 0 |
| 1 | 0 | 0 |
| 0 | 2 | 0 |
| 3 | 1 | 3 |
| 2 | 4 | 2 |
| 6 | 7 | 6 |
It looks like it's setting @R2 to @R0 no matter what.
|