Dev C++调用汇编
参考:
https://blog.csdn.net/ljx0305/article/details/5831742
https://www.cnblogs.com/jokerjason/p/9578646.html
https://blog.csdn.net/weixin_42528089/article/details/83713351
https://www.cnblogs.com/orlion/p/5765339.html
#include<stdio.h> int a; int main(){ printf("Test inline asm\n"); __asm("\ mov $789,%eax\n\ mov %eax,a\ "); printf("A is : %d\n",a); return 0; }
注意:mov不能同时直接寻址和间接寻址——mov $5,(%eax) 是错误的,要拆分为 mov $5 ,%ax mov ax,(%eax)
//测试代码 #include<stdio.h> int a=160,b=255,c,*pa=&a,*pb=&b,*pc=&c,stepnow=15,stepall=30; unsigned char rgb[3],*p=rgb; int main(){ printf("Test inline asm\n"); // __asm("\ // mov $789,%eax\n\ // mov %eax,a\ // "); // __asm("\ // mov pa,%eax;\n\ // mov pb,%ebx;\n\ // mov (%eax),%ax\n\ // mov (%ebx),%bx\n\ // add %bx,%ax\n\ // mov stepnow,%bx\n\ // mul %bx\n\ // mov stepall,%bl\n\ // div %bl\n\ // mov pc,%ebx;\n\ // mov %al,(%ebx)\n\ // mov (%ebx),%ax\n\ // mov %ax,(%ebx)\n\ // "); __asm("\ mov $1,%ax\n\ mov $0,%bx\n\ mov $5,%cx\n\ loop_start:\n\ cmp %bx,%cx\n\ jle loop_exit\n\ add %ax,%bx\n\ jmp loop_start\n\ loop_exit:\n\ mov %bx,c\n\ "); // __asm("\ // mov p,%eax\n\ // mov $1,%bl\n\ // mov $5,%bh\n\ // movb %bl,(%eax)\n\ // add $1,%eax\n\ // mov %bh,(%eax)\n\ // "); //*pt=*pa*(step_all-step_now)/step_all+*pb*step_now/step_all; // __asm("\ // mov stepall,%eax\n\ // mov stepnow,%ebx\n\ // sub %ebx,%eax\n\ // mov pa,%ebx\n\ // mov (%ebx),%bx\n\ // mul %bx\n\ // mov stepall,%ebx\n\ // div %bx\n\ // mov %eax,%ecx\n\ // mov pb,%eax\n\ // mov (%eax),%eax\n\ // mov stepnow,%ebx\n\ // mul %ebx\n\ // mov stepall,%ebx\n\ // div %bl\n\ // add %cl,%al\n\ // mov %al,c\n\ // "); printf("c=%d",c); return 0; }