我有一个我在Pep / 8 Assembly中测试的代码,它接受一个字符>< =的输入并进行比较。完成比较并完成相应的数学运算后,我希望程序提示用户输入其他内容。
我不知道为什么,但我的程序正在滚动输入,因为如果它找到“无效”输入,它只是直接退出程序退出程序。我假设这是一个回车问题。在再次提示之前有没有办法清除'guess'的内容?
CHARI guess,d ;character input
LDBYTEA guess,d ; load character into reg a
CPA '>',i
BRNE L
任何帮助都会有所帮助,谢谢。
答案 0 :(得分:0)
您可能会遇到一些问题。
如果您的第一个数字大于255,则可能会遇到LDBYTEA问题,因为它只会替换寄存器的最后8位。通过快速测试程序很容易看到。
LDA 0x0123,i
LDBYTEA 0x01,i
STOP
.END
(结束时累加器的值为0x0101)
CPA将检查寄存器的所有16位,这将导致它不匹配> <或=如果前8位未设置为0.您可以通过在加载字节之前加载0或通过使用0x00FF(255)清除前8位来解决此问题。
当用户按Enter键时,它将被视为您必须处理的角色。忽略它的最佳选择是检查传入字符是否为“\ n”(0x0A),如果是,则分支回字符输入。
guess: .BYTE 0
main: CHARI guess,d
LDBYTEA guess,d
CPA '\n',i
BREQ main
STOP
.END
如果必须清除guess的内容,可以通过将一个值(如0)加载到寄存器中,然后将其保存到猜测中来实现。
LDA 0,i
STA guess,d
如果您的累加器中有一些您不想覆盖的内容,则可以使用索引寄存器。 (LDX和STX)
当然,你可以做另一个字符输入,它会覆盖猜测内容。
如果仍有问题,请使用“启动调试源”选项逐步完成。 (看起来像一个绿色箭头,底部有一个小甲虫)