【发布时间】:2018-09-04 03:03:18
【问题描述】:
我是 MARIE 的新手。我正在创建一个玛丽代码,它将删除元素之间的“空格”。例如。如果是~~FIT ~ 1047~~~,它将删除元素~~~~。
任何人都可以看看我的代码并指导我吗?
我知道当它到达 HEX 020 时,它会在应该删除它并将下一个值添加到字符串时跳转到结束。
Load NameAddr
Store TrimStringAddr
JnS TrimString
Halt
NameAddr, ADR Name
Name, HEX 052 / R <--- this is where you add your name
HEX 061 / A
HEX 06e / N
HEX 061 / A
HEX 020 / SPACE
HEX 041 / A
HEX 074 / T
HEX 069 / I
HEX 06e / N
HEX 064 / D
HEX 065 / E
HEX 072 / R
HEX 000 / END
TrimStringAddr, HEX 0 / address of string to trim
TrimString, HEX 0
StartTrim, LoadI TrimStringAddr
Output
Subt B
Skipcond 800
Jump End
Subt B
Load TrimStringAddr
Add A
Store TrimStringAddr
Jump StartTrim
End, Halt
B, HEX 020
A, HEX 001
它正在被加载到 AC 中。然而。当我想要获得的是 RANAATINDER 时,我得到的输出是 RANA
【问题讨论】:
-
请添加 cmets 以解释代码中的每条指令应该如何用于实现您的算法,并描述实际发生的情况。你能用你的调试器看到你是否将字符串的字符加载到累加器中吗?
-
是的,它正在被加载到空调中。运行此代码后的输出是 RANA,而我要实现的是 RANAATINDER
-
您应该edit 对您的问题发表评论,以便为可能想要回答您问题的其他人提供更好的minimal reproducible example。 (我不太了解 Marie,所以我花的时间比我想花更多的时间弄清楚你的代码有什么错误。)
-
完成。谢谢先生。
-
而不是
Jump End,如果您只是跳转到Add A指令,您的程序不会跳过空格吗?你需要一个不同的循环退出条件。