Computer science 对三个输入数字进行排序

Computer science 对三个输入数字进行排序,computer-science,little-man-computer,Computer Science,Little Man Computer,我正在看这份作业: 编写一个接受三个输入并按升序输出的程序 我使用了以下LMC模拟器: 这就是我到目前为止所做的: INP 901 Input num1 STA 318 Store num1 in address 18 INP 901 Input num2 STA 319 Store num2 in address 19 INP 901 Input num3 STA 320 Store num3 in address 20 SUB 219 Subtract num2 from num3 BRP

我正在看这份作业:

编写一个接受三个输入并按升序输出的程序

我使用了以下LMC模拟器:

这就是我到目前为止所做的:

INP 901 Input num1
STA 318 Store num1 in address 18
INP 901 Input num2
STA 319 Store num2 in address 19
INP 901 Input num3
STA 320 Store num3 in address 20
SUB 219 Subtract num2 from num3
BRP 810 Jump to address 10 if it is zero or positive (J1)
LDA 519 Load num2 from address 19
STA 320 Store num3 in address 20
LDA 520 Load num3 from address 20 (J1)
SUB 218 Subtract num1 from num3
BRP 815 Jump to address 18 if it is zero or positive (J2)
LDA 518 Load num1 from address 18
STA 320 Store num3 in address 20
LDA 520 Load num3 from address 20 (J2)
OUT 902 Output result
HLT 000 Stop program
DAT     Data num1
DAT     Data num2
DAT     Data num3
我只找到了最大的数字,但我不知道如何按升序排列它们


如何按正确的顺序输出其他两个值?

首先对您提供的代码进行一些注释:

  • 该代码不会在链接到的模拟器上解析。这是因为您将助记符(3字母代码)与指令代码(3位数字)相结合。你应该只使用助记符。例如,编写
    INP
    ,而不是
    inp901
  • 使用标签。因此,例如,不要写
    sta318
    ,它在前面的一点上应该是
    sta18
    ,而是写
    stanum1
    ,并在相应的
    DAT
    行定义该标签:
    num1 DAT
    。请注意,您链接到的模拟器甚至不接受没有标签的
    DAT
  • 在注释的开头使用分隔字符(如
    #
    )。虽然一些模拟器不会介意您只编写注释而不使用这样的分隔符,但使用它是更好的做法。此外,您链接到的模拟器似乎不支持注释
  • 当你发表评论时,发表的评论超出了对说明书的简单描述。例如,将
    Stop program
    作为注释放在
    HLT
    旁边是没有用的。这应该是显而易见的。相反,在算法中对指令的更高用途进行解释。例如,“num3大于num2吗?”在第一个
    BRP
    中是一个很好的注释
因此,将上述更改应用于您的代码,您将得到以下结果:

#输入:3 2 1
磷化铟
STA num1
磷化铟
STA num2
磷化铟
STA num3

comp23 LDA num3#是num2这是否回答了您的问题?先生,非常感谢您的提示。谢天谢地,你的代码对我帮助很大。事实上,我从我的讲师那里得到的模拟器,所以,我只是服从使用它。上面的代码来自我在Word中编写的草稿。