assembly 我如何在汇编语言中找到列表的最大值、最小值和平均值(68000)

kognpnkq  于 2022-11-13  发布在  其他
关注(0)|答案(1)|浏览(150)

我在68000汇编中编写了一个函数,该函数提示用户输入列表的大小,然后提示他们输入每个数字并将其存储在列表中。Function screenshot.
现在我想写第二个函数来“搜索”列表,找到列表中的最大值、最小值和平均值,并存储它们。我知道如何用其他语言使用某些算法来做这件事,但我不知道如何比较每个值来找到我要找的东西,只需要有人给我指出正确的方向。

plicqrtu

plicqrtu1#

您已经有了一段遍历列表的代码(在您的例子中是一个数组)。

lea.l      aX,startOfList
    clr.b      dA                ; register dA holds largest so far
    move.b     #255,dB           ; register dB holds smallest so far
    clr.B      dC                ; register dC holds running average
loop:
    cmp.b      (aX),dA           ; is current bigger than everything else?
    blt.s      noBigger          ;
    move.b     (aX),dA           ; remember current as biggest
noBigger:
    cmp.b      (aX),dB           ; is current smaller than smallest so far?
    bgt.s      noSmaller         
    move.b     (ax),dB
noSmaller:
    move.b     (aX)+,dE          ; fetch a temporary
    ext.w      dE                ; make it a word
    bsr        average           ; and build a running average

    bra loop

注意这里没有显示循环计数器(你在输入代码中已经有了),这需要你自己练习。代码的工作原理是用最大可能值初始化寄存器的最小值,用最小可能值初始化寄存器的最大值,然后检查每一个条目是否大于/小于当前最大/最小值,如果是,则替换它。

相关问题