gpt4 book ai didi

assembly - 为什么我的代码总是在第 2 行出现比较失败,我该如何解决这个问题?

转载 作者:行者123 更新时间:2023-12-05 07:24:35 26 4
gpt4 key购买 nike

在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 中的值。这些实际上是文字数字 12 等,因此您的程序将始终添加相同的数字,从而导致比较失败。

相反,如果您指的是寄存器,则必须在数字前加上 R 前缀,如下所示:

@R0
D=M
@R1
D=D+M
@R2
D=D+M
@R3
D=D+M
@R0
M=D

关于assembly - 为什么我的代码总是在第 2 行出现比较失败,我该如何解决这个问题?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55327352/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com