Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/assembly/6.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Assembly 仅用加法计算幂_Assembly_X86 - Fatal编程技术网

Assembly 仅用加法计算幂

Assembly 仅用加法计算幂,assembly,x86,Assembly,X86,我们被赋予了一项我不知道该怎么做的任务。 任务是这样的: 通过CX进行循环计数,并计算2^CX 例如:如果我将5放入CX中,我得到2^5 指令是仅使用加法,并在仅使用循环、添加、MOV时将结果存储在AL中 我只能得到2的乘法 这是我试过的 MOV AL,2 MOV CX,5 计算: 加上AL,AL 循环计算好的,现在您有了一些代码,但它还没有给您正确的值(它可能给您提供了64)。您应该从1开始,因此AL+AL=2,然后是4,等等 更具体地说: MOV AL,1

我们被赋予了一项我不知道该怎么做的任务。 任务是这样的:

通过
CX
进行循环计数,并计算2^
CX
例如:如果我将5放入
CX
中,我得到2^5

指令是仅使用加法,并在仅使用
循环、添加、MOV
时将结果存储在AL中

我只能得到2的乘法

这是我试过的

MOV AL,2
MOV CX,5
计算:
加上AL,AL

循环计算

好的,现在您有了一些代码,但它还没有给您正确的值(它可能给您提供了
64
)。您应该从
1
开始,因此
AL+AL=2
,然后是
4
,等等

更具体地说:

        MOV     AL,1
        MOV     CX,5
CALC:
        ADD     AL,AL        ; 1+1=2, 2+2=4, 4+4=8, 8+8=16, 16+16=32=2^5
        LOOP    CALC

你试过什么?你知道2的幂是什么吗?什么是2^5?cx=0的结果是什么?cx=1?cx=2?任何模式?提示:如果执行
a=a+a
,则结果为
2^1*a
。如果您再这样做,您就有了
2^2*a
。我相信这里的大多数人都知道答案,但你应该首先展示你的尝试(编辑你的问题并将代码粘贴到其中)。否则,您将什么也学不到。嵌套循环是您的朋友。@用户:请看我的答案。哦,我明白了,在我上面发布的代码中,结果是40h,表示64位小数。有什么逻辑解释为什么AL应该从一开始吗?@user6219654:有。第一个循环的结果应该是2,即1+1,而不是2+2。换句话说,从2^0=1开始。