Algorithm 显示输入了多少正数和负数
我正试图写一个小的计算机程序,输出我有多少正数和我有多少负数,但它认为负数也是正数 这就是我到目前为止所做的:Algorithm 显示输入了多少正数和负数,algorithm,loops,little-man-computer,Algorithm,Loops,Little Man Computer,我正试图写一个小的计算机程序,输出我有多少正数和我有多少负数,但它认为负数也是正数 这就是我到目前为止所做的: LOOP IN STO NUM BRZ END BRP POS POS LDA ZERO ADD UN STO ZERO END LDA ZERO OUT BR LOOP HLT NUM DAT 000 UN DAT 001 ZERO DAT 000 规范不支持为LMC提供负输入。LM
LOOP IN
STO NUM
BRZ END
BRP POS
POS LDA ZERO
ADD UN
STO ZERO
END LDA ZERO
OUT
BR LOOP
HLT
NUM DAT 000
UN DAT 001
ZERO DAT 000
规范不支持为LMC提供负输入。LMC内存单元只能保存0到999之间的值(来源:)。“负”的唯一概念由LMC的负标志表示。该标志仅由执行
ADD
或SUB
设置,因此不由INP
/IN
、LDA
或STA
/STO
设置(拼写不同)。也见伊恩!艾伦在书中讨论了这个令人困惑的概念
这实际上意味着您的BRP
指令将始终分支到提供的标签
您可能会发现模拟器实际上允许负输入,但这将是对原始规范的扩展
现在,您的代码在这条BRP POS
指令中也有问题,因为它只是跳转到下一行(标记为POS
),所以实际上BRP
是否分支没有任何区别:这是一个no操作
类似的练习
负值在LMC中并不存在,让我们做一点不同的练习:考虑输入在10’s补码中出现,这样500…999被认为是负值(即-500…-1)。或者,当您执行
INP
时,有符号的输入值实际上将存储在10的补码中。然后计算小于500(正)和不小于500(当解释为10的补码时为负)的输入数
LOOP-INP
BRZ饰面
子比较
BRP其他
LDA较少
加一
无斯塔
文胸环
要不然我就不知道了
加一
STA NOTLESS
文胸环
完成LDA更少
出来
利达诺利斯酒店
出来
HLT
减DAT
不少于DAT
比较DAT 500
一个DAT 1
上述程序的输出是什么,基本上您需要编写一个解析器来解析您的命令并找出output@zenwraight这是一个可接受的模拟器吗?据我所知,用小人电脑是无法输入负数的,只能定义0…999范围内的值。