问题标签 [little-man-computer]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
3 回答
5108 浏览

assembly - LMC - 不负(小人电脑)

只是在这里与 Little Man Computer 合作,并遇到了一个让我烦恼的问题。由于没有 if 等,我发现当从偶数中减去时,很难阻止奇数变成负数。例如,我在一个循环中从 10 中取 3,分支为零。但这永远不会达到零。所以我想知道如何让应用程序在它变为负数之前停止,例如从循环中的 10 中减去 3 将是 10、7、4、1、-2。但我希望它停止在 1,因此不会陷入负面并克服这个问题。

这是我到目前为止所拥有的,仅适用于偶数和偶数:

(首先,我想将第二个输入声明为变量是个好主意,对吧?或者不是?)

如果您能帮助我,将不胜感激。并提出一个永久的解决方案。

0 投票
2 回答
348 浏览

c++ - C++ 中的运算符重载和数组处理

我正在编写一个小人计算机模拟,我想重载索引运算符 []。我创建了一个名为 LMC 的类并完成了以下操作:

我可以毫无错误地运行程序。当我这样说时mailbox = 0function = 123这没问题。

显示如下:

这个显示是错误的。必须显示以下内容:

我是否有逻辑错误,或者我是否覆盖了数组以显示原始内容,我该如何解决?

0 投票
1 回答
5961 浏览

assembly - 通过找出最大和较小的值来将两个数字相乘

我正在使用一个名为可见虚拟机的小人计算机模拟器程序来学习汇编语言格式的编码基础知识。目前,我正在尝试将任意两个数字(x& y)相乘,但以一种有效的方式,通过抓取最大的数字并将较小的数字等于多少次添加到其中。我怎样才能交换数字,以便它取最大的数字并加上较小的数字等于多少倍?

例如

输入可以是:

5 * 12或者12 * 5

高效计算:

12 + 12 + 12 + 12 +12 = 60

效率不高:

5 + 5 + 5 + 5 + 5 + 5 + 5 + 5 + 5 + 5 + 5 + 5 = 60

代码:

0 投票
1 回答
8918 浏览

sorting - 对三个数字从小到大排序

我目前正在学习汇编语言。我已经能够创建一个快速的短函数来将两个数字从最小到最大交换。我正在应用相同的基本基础来使用三个数字执行此操作,但每次执行比较时,它都会进入无限循环。我通过使用来声明这个函数*60。如何正确地将三个数字从小到大排序?另外,有没有一种方法可以让相同的函数在不进行任何额外更改的情况下执行两个和三个数字?

一些汇编程序的语法略有变化。这里是我目前正在使用的一个教育组件 Little Man 计算机模拟器的链接。

使用两个数字进行交换:

0 投票
2 回答
796 浏览

hardware - 小人计算机的每个字中的最小位数必须是多少?

我在阅读 CS 书籍时遇到了以下问题,有人可以向我解释一下吗?>“小人计算机可以有十个操作码(0-9)和存储地址100个字(0-99)。如果用二进制数代替十进制数,LMC每个字的最小位数必须是多少是?”

0 投票
1 回答
6815 浏览

assembly - 汇编语言问题。小人计算机程序

我正在尝试使用旧的汇编语言在 LMC 中编写两个不同的程序。第一个如下:

编写一个 LMC 程序,它接受两个输入、一个要倒数的数字和步长值(例如:从 35 倒数 5),直到它达到零。如果序列不以零结束,它应该打印每个步骤,以及零之前的最后一个数字,但如果数字变为负数,则不应打印该数字。使用 13 和 3 作为输入的示例输出为:13、10、7、4、1。使用 12 和 3 作为输入的示例输出为:12、9、6、3、0。

我已经尝试过这样的事情:

哪个不起作用

我正在尝试编写的第二个 LMC 程序如下:

编写代码来计算三角形的面积和周长。该程序应接受 3 个输入,依次是三角形的底边、高度和第三边。代码应该在输出框中产生 2 个值,第一个数字是面积,第二个数字是周长。(提示:您可能希望使用 DAT 语句来存储一些值以开始)。

我什至不知道从哪里开始。

任何帮助,将不胜感激。

我还有一些示例代码可以提供帮助:

计算周长和面积 - 以 L 和 W 作为输入,首先打印周长,然后是面积。

乘以两个数字。

将第一个数字输入相加,然后从总数中减去第二个输入

从输入到零的一种计数方法

平方数

0 投票
3 回答
2779 浏览

little-man-computer - 小人电脑-正面分支

在 Little Man computer (LMC) 中,条件 Branch on Positive (BRP) 包括零作为正数(我认为 number>0 是正数)。我知道 LMC 是一个富有想象力的概念,但我想知道是否有任何处理器(过时的或当前的)在正数上使用 Branch,包括零作为正数?

0 投票
1 回答
1353 浏览

little-man-computer - LMC 通过用户输入查找素数

嗨,大家好,

我有一个代码可以找到 1-100 之间的质数,但我正在努力将它重新创建到一个只能找到用户输入之间的质数的程序中。

我有一个计划,将一个数字从另一个数字中减去,然后将该数字除以 2、3、4 和 5。

你们有什么建议吗?我为缺乏评论表示歉意。

0 投票
4 回答
5277 浏览

little-man-computer - 关于小人电脑除数余数(模数)

编写一个程序,要求用户输入 2 个数字。然后,程序将第二个数除以第一个数的余数(模数)的结果显示在屏幕 (OUT) 上。例如,如果输入的第一个数字是 14,而输入的第二个数字是 5,那么程序将显示 4。

14 mod 5 = 14 - (2 * 5) = 14 - 10 = 4

14 mod 7 = 14 - (2 * 7) = 14 - 14 = 0

您可以假设输入的数字始终为正且大于 0。

嗨,这是我不知道如何开始这个问题/做的问题?

0 投票
1 回答
1346 浏览

assembly - LMC - 有效地检查 Little Man Computer Assembly 中的 a^2 + b^2 = c^2

我的程序需要接受 3 个输入,然后检查它们是否形成毕达哥拉斯三元组。我正在使用 Little Man Computer 来执行此操作,因此我正在使用 LMC 组装。如果你想了解更多关于可以使用的命令的信息,或者下载我正在使用的模拟器,这里是链接

这是我到目前为止编写的代码。

如果 a,b,c 形成毕达哥拉斯三元组,则程序将输出 001,否则将输出 000。但是,如果发生溢出(即输入超过 LMC 3 位限制),它也需要输出 002。

我知道该代码可用于检查 a、b、c 是否为毕达哥拉斯三元组。但是,我需要一些检查溢出的方法(LMC 只接受 3 位值)。为了让这更难,我正在使用的 LMC 版本上没有溢出标志。我的想法是检查 c > 31,因为任何高于 31 的东西在平方时都会大于 1000,并以某种方式检查 a^2 + b^2 > 1000。

更复杂的是,LMC 只有 99 个内存地址来存储数据和指令,而我只剩下 5-6 个。无论如何我可以简化上述代码以减少程序指令占用的内存量吗?我最初认为我可以使用一个循环进行平方过程,但我不确定我将如何分支以每次将结果保存在不同的变量中。

任何帮助将不胜感激。

更新:这是有效的插入排序lmc代码