剥离ASCII模板是什么意思?

承诺的机器人

我正在练习考试

问题在执行该程序时,用户输入两个数字。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中的值。

雅库布·帕索恩(JakubPasoń)

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

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章