这个MARIE代码是否找到数组中的最小数字?

时间:2013-12-15 03:27:39

标签: arrays assembly marie

我相信我这样做是正确的,任何人都可以仔细检查工作。如果它是正确的,我应该在哪里验证它是否正在选择正确的数字。所以我试图给出数组,看看哪一个是该数组中最小的数字。

    Org 100     /Find minimum
    Load    Start
    Add Num
    Subt    One
    Store   Loc
    Loadi   Loc
    Store   Min 
    Load    Num
    Subt    One
    Store   J
Loop,   Load    J
    Skipcond 00
    Jump    After
    Jump    Done
After,  Load    Loc
    Subt    One
    Store   Loc
    Subt    Min
    Skipcond 00
    Jump    After2
    Loadi   Loc
    Store   Min
After2, Load    J
    Subt    One
    Store   J
    Jump    Loop
Done,   Load    Min
    Halt

Min,    Dec 0  /where we save the min
Num,    Dec 10 /Numbers of value in array
One,    Dec 1 
J,  Dec 0  /Loop variable
Loc,    Dec 0
Start,  Hex 121 /Be sure to start off values in array
Array,  Dec 5
    Dec 20
    Dec 11
    Dec 15
    Dec 83
    Dec 2
    Dec 7
    Dec 1
    Dec 13
    Dec 15

1 个答案:

答案 0 :(得分:0)

这看起来很可疑:

   Loadi   Loc
    Store   Min 

零地址你有什么?

[编辑] 啊,这是对的,但另一件事:它不跳过第9个数组元素吗?

我理解它初始化: 将第10个元素存储为(当前)min,将ptr设置为第9个元素并将循环计数设置为9。

然后循环中的第一件事 - 在检查循环计数器之后,它会在检查“next”元素之前再次递减指针。

或者我理解错了什么?

[编辑#2]

啊哈,我给出的链接背后的玛丽不理解间接指示。 这样做。 http://computerscience.jbpub.com/ecoa/3e/simulators.aspx

看起来还有其他错误:

这没有意义:

After,  Load    Loc
    Subt    One
    Store   Loc
    Subt    Min / here 'Min' is subtracted from the element's address
    Skipcond 00

我想程序应该找到最小值,但它根本不起作用。