【问题标题】:What does stripping off the ASCII template mean?剥离 ASCII 模板是什么意思?
【发布时间】:2015-07-12 08:44:53
【问题描述】:

我正在做一个模拟考试题

问题 在执行该程序时,用户输入两个数字。 xGuess 的值是多少,所以我们可以去掉 ASCII 模板?解释一下。

.ORIG x3000
TRAP x23
LD R2, ASCII
ADD R1, R2, R0
TRAP x23
ADD R0, R0, R2
ADD R0, R0, R1
ASCII .FILL xGuess
.END

使用Lc3 Assembly 作为参考,我能够弄清楚这个程序的作用(从上到下)

  1. 开始在内存地址 x3000 放置代码
  2. 让用户输入一个字符,调用这个字符。寄存器 0 将存储 k 的值
  3. xGuess -> R2
  4. (k + xGuess) -> R1.
  5. 让用户输入另一个字符,称为这个字符 c。 c->R0
  6. (c + xGuess) -> R0
  7. ((c + xGuess) + (k + xGuess))-> R0

所以最后,R0 会存储 k + c + 2 * xGuess 的值。 这是我在 Lc3 中的相同运行(如下所示)(xGuess = 4,k = 97,c = 98)

这证实了我的怀疑,因为 R0 存储的是 97 + 98 + 2 * 4 或 203。

有谁知道“剥离 ASCII 模板”的问题是什么意思?我不太明白这个措辞,因为 ASCII 的值会影响最终存储在 R0 中的值。

【问题讨论】:

    标签: assembly ascii cpu-registers computer-architecture lc3


    【解决方案1】:

    如您所见,操作是对输入字符的 ASCII 值执行的。在汇编中,如果你从键盘读取字符,你真的会在寄存器中得到它们的 ASCII 值,所以假设你输入 2 和 3 并想要添加它们,那么你实际上是在添加 50+51。您必须先从每个输入的字符中减去 48,因为 48 在 ASCII 中是 0 字符的值。我认为这被称为“剥离 ASCII 模板”。然后,如果要在屏幕上显示计算结果,则必须将结果加回48(仅当输入字符且结果为单个数字时,数字越大则涉及更多操作)。然而,这对于字符 0-9 是有意义的。我不知道您为什么要对字母字符进行计算,例如您的示例中的 a 和 b。

    【讨论】:

    猜你喜欢
    • 2010-09-29
    • 2010-10-04
    • 2021-10-29
    • 2022-09-23
    • 2015-11-03
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多