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开始。