负数比较失败

时间:2019-03-25 20:57:02

标签: assembly nand2tetris

我需要回答的问题是,为什么第9行而不是第8行比较失败?

第二个问题:

如何解决此问题以支持负值的乘法?

程序将R0和R1相乘并将结果存储在R2中。 (R0,R1,R2分别代表RAM [0],RAM [1]和RAM [2]。)

Mult.asm:

0   @R2
1   M=0
2   @R0
3   D=M
4   @STEP
5   D;JNE
6   @END
7   0;JMP
8   @R2
9   D=M
10  @R1
11  D=D+M
12  @R2
13  M=D
14  @R0
15  D=M-1
16  M=D
17  @STEP
18  D;JGT
19  @END
20  0;JMP

Mult.cmp:

|  RAM[0]  |  RAM[1]  |  RAM[2]  |
|       0  |       0  |       0  |
|       1  |       0  |       0  |
|       0  |       2  |       0  |
|       3  |       1  |       3  |
|       2  |       4  |       8  |
|       6  |       7  |      42  |
|       6  |      -7  |     -42  |
|      -6  |       7  |     -42  |

0 个答案:

没有答案