Pep / 8组装车返回清晰?

时间:2016-10-21 09:34:15

标签: assembly machine-code pep8-assembly

我有一个我在Pep / 8 Assembly中测试的代码,它接受一个字符>< =的输入并进行比较。完成比较并完成相应的数学运算后,我希望程序提示用户输入其他内容。

我不知道为什么,但我的程序正在滚动输入,因为如果它找到“无效”输入,它只是直接退出程序退出程序。我假设这是一个回车问题。在再次提示之前有没有办法清除'guess'的内容?

     CHARI     guess,d     ;character input
     LDBYTEA   guess,d     ; load character into reg a
     CPA       '>',i
     BRNE      L

任何帮助都会有所帮助,谢谢。

1 个答案:

答案 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)

当然,你可以做另一个字符输入,它会覆盖猜测内容。

如果仍有问题,请使用“启动调试源”选项逐步完成。 (看起来像一个绿色箭头,底部有一个小甲虫)