C 中的汇编程序代码将 1 加到输入和幂 x 次

Assembler code in C adding 1 to input and to power x times

我必须使用 CodeBlocks 在 C 中编写一些 asm("code")。我需要将输入值 'a' 递增 1,然后像这样 a * a * a 为结果供电。在递增和功率值 a*a 很容易的情况下,另一个功率为前一个功率的结果提供动力。对于前。 2 * 2 = 4 然后 4 * 4 = 16 我当前的代码:

#include <stdio.h>
#include <stdlib.h>


int main(){
short int a,b;
scanf("%hu",&a);
asm("mov %1, %%ax\n\t"
    "inc %%ax\n"
    "mul %%ax\n"
    "mov %%ax, %0"
    :"=r" (a)
    :"r" (a), "r" (b)
    );
    printf("%d\n", a);
    return 0;
}

这不是最好、最简单或最干净的方法,但这对我有用。 它将输入值加 1,然后对值进行乘方 2 次。

#include <stdio.h>
#include <stdlib.h>
int main(){
int a, b,c=1;
scanf("%i",&a);
asm( "addl %%ebx, %%eax;" : "=a" (a) : "a" (a) ,  "b" (c) );
asm( "imul %%ebx, %%eax;" : "=a" (b) : "a" (a) ,  "b" (a) );
asm( "imul %%ebx, %%eax;" : "=a" (b) : "a" (a) ,  "b" (b) );
printf("%d\n", b);
return 0;
}