【发布时间】:2021-04-07 18:26:56
【问题描述】:
我在看这个小人电脑问题:
- 第一个输入确定 n 的值,假设该值等于或大于 4
- 示例:如果第一个输入是八 (8),则请求八个后续输入。如果随后的输入编号为 1、0、0、1、0、0、0、0,则输出将为 9。
- n 个输入值由用户提供,每个位一个:第一个是最低有效位。第 n 个输入是最重要的位。
我的尝试:
IN
STO NUMBER
IN
STO A
IN
STO B
IN
STO C
IN
STO D
LOOPB: LDA FOUR
BRZ ENDB
SUB ONE
STO FOUR
LDA RESB
ADD B
STO RESB
BRP LOOP
ENDB:LDA RESB
OUT
HLT
ONE: DAT 1
EIGHT: DAT 8
FOUR: DAT 4
TWO: DAT 2
POWERONE: DAT 1
RESA: DAT 000
RESB: DAT 000
RESULT: DAT 000
NUMBER: DAT 0
A: DAT 0
B: DAT 0
C: DAT 0
D: DAT 0
我不知道如何解决这个问题,如何使 00001001 在 LMC 上转换为 9?我不确定如何在 LMC 上进行乘法运算。
【问题讨论】:
-
n在这个算法中的作用是什么?这是接下来的输入数量吗?每个下一个输入是单个二进制数字吗?
NUMBER在您的代码中的用途是什么,因为您在输入后从不使用它? -
您的代码中
EIGHT、TWO、POWERONE和RESA的用途是什么...它们从未被使用过?|A是什么意思?是评论吗? -
n 的作用是请求后续输入,比如 n 是 8,后续输入为 1,0,0,1,0,0,0,0 则输出为 9,其中第一个是最不重要的,第 n 个输入是最重要的。八的目的是我确实知道如何在LMC中进行乘法运算,所以我只是直接输出结果。 A 是评论
-
你可以通过将一个数字添加到自身来乘以 2(这个问题所需要的全部)。
-
是的!非常感谢您的帮助!!