在CPU模拟器Add4.asm中的hack汇编语言中,测试始终在第2行中失败。我尝试了各种形式进行修复,但无法弄清楚。如何将其设置为0,或者这不是问题,还可以如何解决我的代码?ADD4 Hack汇编语言帮助
每当我运行.asm文件时,都会在第2行出现比较失败的情况。请帮助我解决此问题。这是我的.asm代码,后跟ADD4.tst。Add4.asm的行号有清楚的注释。
Add4将四个数字相加(等效地在RAM [0],…,RAM [3]或R0,…,R3中找到),并将结果存储在RAM [0](又名R0)中。您的程序必须在30个周期或更短的时间内完成
Add4.asm:
1. @1
2. D=M
3. @2
4. D=D+M
5. @3
6. D=D+M
7. @4
8. D=D+M
9. @5
10. D=D+M
11. @0
12. M=D
Add4.tst:
load Add4.asm,
output-file Add4.out,
compare-to Add4.cmp,
output-list RAM[0]%D2.6.2;
set RAM[0] 1,
set RAM[1] 2,
set RAM[2] 3,
set RAM[3] 4,
repeat 30
{ ticktock; }
output;
set PC 0,
set RAM[0] 0,
set RAM[1] 0,
set RAM[2] 0,
set RAM[3] 0,
repeat 30
{ ticktock; }
output;
set PC 0,
set RAM[0] -10,
set RAM[1] 5,
set RAM[2] 100,
set RAM[3] 9,
repeat 30
{ ticktock; }
output;
add4.cmp:
1.| RAM[0] |
2.| 10 |
3.| 0 |
4.| 104 |
您错误地使用@1
,@2
等等引用存储在RAM中的值。这实际上是字面数字1
,2
等等,让你的程序将总是添加相同的号码,从而给你比较失败。
相反,R
如果要引用寄存器,则必须在数字之前加上数字,如下所示:
@R0
D=M
@R1
D=D+M
@R2
D=D+M
@R3
D=D+M
@R0
M=D
本文收集自互联网,转载请注明来源。
如有侵权,请联系 [email protected] 删除。
我来说两句