nand2tetris/projects/04/mult/Mult.asm

50 lines
766 B
NASM
Raw Permalink Normal View History

2021-12-06 18:37:57 +00:00
// 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]
2021-12-07 16:18:15 +00:00
@R2
2021-12-06 18:37:57 +00:00
M=0
2021-12-07 16:18:15 +00:00
@itr
2021-12-06 18:37:57 +00:00
M=0
// loop declaration
// D = R1 - itr
// if 0 jump to @STOP
// else continue
(LOOP)
@itr
D=M
@R1
D=D-M
2021-12-07 16:18:15 +00:00
@END
2021-12-06 18:37:57 +00:00
D;JEQ
2021-12-07 16:18:15 +00:00
// R2 = R0 + R2
2021-12-06 18:37:57 +00:00
// itr = itr + 1
@R0
D=M
2021-12-07 16:18:15 +00:00
@R2
2021-12-06 18:37:57 +00:00
M=D+M
@itr
M=M+1
// back to loop declaration
@LOOP
0;JMP
// loopy loop
(END)
@END
0;JMP