如何解决汇编语言中的序列

时间:2013-03-31 13:30:54

标签: assembly

我如何用汇编语言解决以下序列:

R1 = -2 + 4-6 + 8-10 ..... + - N的

注意:N值作为输入

2 个答案:

答案 0 :(得分:1)

查看以下几个值来查找模式:

N     R1
2     -2
4     +2
6     -4
8     +4
10    -6
12    +6

因此,当N%4 == 0R1 = N/2N%4 == 2时,R1 = -(N/2 + 1)

所以为了计算这个,你要做以下(伪代码,但很容易转换为汇编)

     if N%2 is not 0 then error: invalid input
     R1 = N/2
     if N%4 == 0 then jump to done
     R1 = R1 + 1
     R1 = -R1
   done:

答案 1 :(得分:-1)

It is an arithmetico geometric progression with a = -2, d = -2 , r = -1
an = (a + (n-1)*d)*(r^(n-1))
N = an = 2*n*((-1)^n)
n = absolute(N) / 2                                                     -1
R1 = Sn
on solving you will get
R1 = ((-1)^n)*n - ( 1 + (-1)^(n-1) )/2                                  -2

您可以使用eqn 1和2来获取R1。这是C

中的样本
#include<math.h>

int main() { 
float nlast,n,r1;
nlast = 12;
n = abs(nlast) / 2;
r1 = pow(-1,n)*n - ( 1 + pow(-1,n-1) )/2;
return(r1);
}

您可以使用此site来获取汇编代码。