我正在练习考试
问题在执行该程序时,用户输入两个数字。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作为参考,我能够弄清楚该程序的作用(从上到下)
因此,最后,R0将存储k + c + 2 * xGuess的值。这是我在Lc3中的相同运行(如下所示)(xGuess = 4,k = 97,c = 98)
这证实了我的怀疑,因为R0正在存储97 + 98 + 2 * 4或203。
有人知道“剥离ASCII模板”意味着什么吗?我不太理解该措辞,因为ASCII的值最终会影响最后存储在R0中的值。
如您所见,对输入字符的ASCII值执行操作。在汇编中,如果您从键盘上读取字符,则实际上会在寄存器中获得它们的ASCII值,因此,假设您输入2和3并想要添加它们,那么您实际上是在添加50+51
。您必须从每个输入的字符中先减去48,因为48是ASCII值0字符。我认为这被称为“剥离ASCII模板”。然后,如果要在屏幕上显示计算结果,则必须在结果上加上48(仅当输入的字符且结果为一位数字时,如果数字较大,则涉及更多操作)。Howerer,这对于字符0-9是有意义的。我不知道您为什么要对字母字符进行计算,例如您的示例中的a和b。
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句