我可以对它进行编程以输出2个数字中的最高数字,但我仍然坚持如何输出3个数字输入中的最高数字。有人可以帮忙吗?
答案 0 :(得分:2)
用语言说:
read input into mailboxes M0, M1, M2
if M1 > M2
store M1 into M2
if M0 > M2
store M0 into M2
output M2
在小人电脑汇编程序中:
INP
STA M0
INP
STA M1
INP
STA M2
SUB M1
BRP J1
LDA M1
STA M2
J1 LDA M2
SUB M0
BRP J2
LDA M0
STA M2
J2 LDA M2
OUT
HLT
M0 DAT
M1 DAT
M2 DAT
您可以在此处运行该程序:Max of 3 in LMC Emulator
答案 1 :(得分:0)
LMC汇编代码注释
INP
L1 STA hi
L2 LDA co </ p>
SUB two
BRZ op
LDA co
ADD one
STA co
INP
STA wo
SUB hi
BRP sw
BRA L2
sw LDA wo
BRA L1
op LDA hi
OUT
HLT
你好DAT
co DAT
wo DAT
一个DAT 1
两个DAT 2
输入第一个数字
L1将该数字存储为目前为止最高
L2加载循环计数器
从计数器中减去两个
如果我们完成跳转到输出op
否则加载计数器
在计数器中添加一个
存储更新的计数器
获取下一个号码
将其存储为工作号
到目前为止减去最高的数字
如果我们有一个新的
,则分支到sw(ap)否则分支回L2
sw加载工作号码(新的高位)
分支到L1
op再次加载最高编号
将其发送至输出
暂停程序
保持当前高位数的数据
保存循环计数器的数据
保存工作号码的数据
数据保持循环增量编号
数据循环的次数
通过更改最后一个DAT语句,可以轻松调整更多数字。 要做十个号码,请使用两个DAT 9&#39;代替。
答案 2 :(得分:0)
一个Little Man程序,它接受三个值作为输入并产生三个值中的最大一个作为输出。
00 IN 901 Take first value as input
01 STO 320 Store the first value in 20th mailbox
02 IN 901 Take second value as input
03 STO 321 Store the second value in 21st mailbox
04 IN 901 Take third value as input
05 STO 322 Store the third value in 22nd mailbox
06 SUB 221 Subtract the second value (21st mailbox) from third value
07 BRP 810 If the difference is positive then, move to the 10th instruction
08 LDA 521 As the second value is greater than third value, load second value
09 STO 322 Store the second value in 22nd mailbox
10 LDA 522 Load the value from 22nd mailbox
11 SUB 220 Subtract the first value (20th mailbox) from loaded value
12 BRP 815 If the difference is positive then, go to the 15th instruction
13 LDA 520 As the first value is greater than loaded value, load first value
14 STO 322 Store the first value in 22nd mailbox
15 LDA 522 Load the value from 22nd mailbox
16 OUT 902 Output the loaded value
17 HLT 000 Stop