在循环期间以特定倍数组装打印

时间:2014-04-02 18:41:22

标签: assembly sparc

嗨,这是针对Sparc汇编语言的,我有一个带有计数器的循环,用于跟踪它循环的循环次数。我如何检查该计数器,如果它是4的倍数打印“blah blah blah”等等。因此,在计数4,8,12,16,20 .....等应该打印那句“blah blah blah”。因为我是初学者,所以最有效的方式和最容易理解的是什么。谢谢。

1 个答案:

答案 0 :(得分:0)

按照你自己的4个例子...你想要的,可以通过在每次循环迭代时将计数器除以4来实现。仅在该除法的其余部分为零时打印消息。

由于4是2的幂,因此基于计数器(其二进制表示)的最右边(即最不重要)位变为00的事实,存在一种有效的替代方案。每四个步骤。只需按计数器和3(= 4 - 1)的按位'和';如果结果为零,则打印消息。

我没有Sparc经验,所以这里什么都没有:

    and  %L1,3,%g0      ; assuming register %L1 is the counter
    bne  PastMessage    ; skip the call below if result of 'and' was not zero
    call PrintMessage
PastMessage:
    ...