【问题标题】:Pep/8 Assembly Carriage Return clear?Pep/8 组装回车清楚吗?
【发布时间】:2016-10-21 09:34:15
【问题描述】:

我有一个在 Pep/8 Assembly 中测试过的代码,它接受一个字符 >

我不知道为什么,但我的程序正在处理输入,因为如果它发现一个“无效”输入,它就会直接进入退出程序的条件。我假设此时这是一个回车问题。有什么办法可以在再次提示之前清除“猜测”的内容?

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

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

【问题讨论】:

  • 也许只是 CR 的 CPA,然后循环回 CHARI? (创建“输入任何非 CR 字符”无限循环)。 (在网上找不到任何 pep/8 的好资源,所以只是猜测)

标签: assembly machine-code pep8-assembly


【解决方案1】:

您可能会遇到一些问题。

如果您的第一个数字大于 255,您可能会遇到 LDBYTEA 问题,因为它只替换寄存器的最后 8 位。使用快速测试程序很容易看到这一点。

 LDA      0x0123,i
 LDBYTEA  0x01,i
 STOP
 .END

(以累加器结束,值为 0x0101)

CPA 将检查寄存器的所有 16 位,如果前 8 位未设置为 0,这将导致它不匹配 >


当用户按下回车键时,这将被视为您必须处理的字符。忽略它的最佳选择是检查传入的字符是否为 "\n" (0x0A),如果是,则返回字符输入。

guess:   .BYTE   0
main:    CHARI   guess,d
         LDBYTEA guess,d
         CPA     '\n',i
         BREQ    main
         STOP
         .END

如果必须清除guess的内容,可以通过将0等值加载到寄存器中,然后将其保存在guess中。

 LDA     0,i
 STA     guess,d

如果您的累加器中有不想覆盖的内容,您可以使用变址寄存器。 (LDX 和 STX)

当然,您也可以输入另一个字符,这会覆盖guess 的内容。


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

【讨论】:

    猜你喜欢
    • 2014-08-02
    • 2014-02-13
    • 1970-01-01
    • 1970-01-01
    • 2019-12-26
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多