设计一个算法,输入2个数,然后输出小人计算中最小的数
Design an algorithm to input 2 numbers and then output the lowest number in little man computing
我有一个正在做的程序,我想输入两个数字,以便LMC 可以输出最小的一个。我的代码给了我最大的数字,帮我解决一下。
INP
STA first
INP
STA second
SUB second
BRP secondBig
LDA second
OUT
BRA endProgram
secondBig LDA second
OUT
endProgram HLT
first DAT
second DAT
反转你的条件分支:使用 BRN(负分支)而不是 BRP。
或者,切换决定哪个值可用于输出的逻辑分支。
您将两个输入值都存储在 first
中,这意味着您用第二个覆盖了第一个。
在修复上述问题之前和之后,您的代码都没有输出最大的,而是输出了 second(无论相对大小如何)。单步执行,或者实际阅读代码,应该会告诉你为什么。
问题是您将第二个输入与其自身进行了比较。您可以在 SUB second
之前插入 LDA first
,但是如果您反转输出块,则可以避免额外的 LDA
你有一个标签“secondBig”也是令人困惑的,而实际上你不是在寻找最大的数字,而是在寻找最小的数字
更正:
#input: 4 7
INP
STA first
INP
STA second
SUB first
BRP firstLeast
LDA second
OUT
BRA endProgram
firstLeast LDA first
OUT
endProgram HLT
first DAT
second DAT
<script src="https://cdn.jsdelivr.net/gh/trincot/lmc@v0.7/lmc.js"></script>
我有一个正在做的程序,我想输入两个数字,以便LMC 可以输出最小的一个。我的代码给了我最大的数字,帮我解决一下。
INP
STA first
INP
STA second
SUB second
BRP secondBig
LDA second
OUT
BRA endProgram
secondBig LDA second
OUT
endProgram HLT
first DAT
second DAT
反转你的条件分支:使用 BRN(负分支)而不是 BRP。 或者,切换决定哪个值可用于输出的逻辑分支。
您将两个输入值都存储在 first
中,这意味着您用第二个覆盖了第一个。
在修复上述问题之前和之后,您的代码都没有输出最大的,而是输出了 second(无论相对大小如何)。单步执行,或者实际阅读代码,应该会告诉你为什么。
问题是您将第二个输入与其自身进行了比较。您可以在 SUB second
之前插入 LDA first
,但是如果您反转输出块,则可以避免额外的 LDA
你有一个标签“secondBig”也是令人困惑的,而实际上你不是在寻找最大的数字,而是在寻找最小的数字
更正:
#input: 4 7
INP
STA first
INP
STA second
SUB first
BRP firstLeast
LDA second
OUT
BRA endProgram
firstLeast LDA first
OUT
endProgram HLT
first DAT
second DAT
<script src="https://cdn.jsdelivr.net/gh/trincot/lmc@v0.7/lmc.js"></script>