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;
}
我必须使用 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;
}