05 内嵌汇编的编程
说明:参考狄泰软件学院相关课程




示例如下:
#include <stdio.h>
int main()
{
int result = 0;
int input = 1;
int a = 1;
int b = 2;
asm volatile (
"movl %1, %0\n"
: "=r"(result)
: "r"(input)
);
printf("result = %d\n", result);
printf("input = %d\n", input);
asm volatile (
"movl %%eax, %%ecx\n"
"movl %%ebx, %%eax\n"
"movl %%ecx, %%ebx\n"
: "=a"(a), "=b"(b)
: "a"(a), "b"(b)
);
printf("a = %d\n", a);
printf("b = %d\n", b);
return 0;
}
结果如下:
result = 1 input = 1 a = 2 b = 1




示例代码:
#include <stdio.h>
int main()
{
char* s = "D.T.Software\n";
int l = 13;
printf("main begin\n");
asm volatile(
"movl $4, %%eax\n"
"movl $1, %%ebx\n"
"movl %0, %%ecx\n"
"movl %1, %%edx\n"
"int $0x80 \n"
:
: "r"(s), "r"(l)
: "eax", "ebx", "ecx", "edx"
);
asm volatile(
"movl $1, %eax\n"
"movl $42, %ebx\n"
"int $0x80 \n"
);
printf("main end\n");
return 0;
}
运行结果:



posted on 2020-06-12 11:40 lh03061238 阅读(259) 评论(0) 收藏 举报
浙公网安备 33010602011771号