设计一个算法来输入3个数字,然后在小人计算中输出最高的数字

时间:2016-04-18 09:42:24

标签: algorithm little-man-computer

我可以对它进行编程以输出2个数字中的最高数字,但我仍然坚持如何输出3个数字输入中的最高数字。有人可以帮忙吗?

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