• 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
    ");
      __asm("
              mov $789,%eax
    
            mov %eax,a
            ");
      printf("A is : %d
    ",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
    ");
    //    __asm("
    //        mov $789,%eax
    
    //        mov %eax,a
    //    ");
    //    __asm("
    //        mov pa,%eax;
    
    //        mov pb,%ebx;
    
    //        mov (%eax),%ax
    
    //        mov (%ebx),%bx
    
    //        add %bx,%ax
    
    //        mov stepnow,%bx
    
    //        mul %bx
    
    //        mov stepall,%bl
    
    //        div %bl
    
    //        mov pc,%ebx;
    
    //        mov %al,(%ebx)
    
    //        mov (%ebx),%ax
    
    //        mov %ax,(%ebx)
    
    //    ");
        __asm("
            mov $1,%ax
    
            mov $0,%bx
    
            mov $5,%cx
    
            loop_start:
    
            cmp %bx,%cx
    
            jle loop_exit
    
            add %ax,%bx
    
            jmp loop_start
    
            loop_exit:
    
            mov %bx,c
    
        ");
    //    __asm("
    //        mov p,%eax
    
    //        mov $1,%bl
    
    //        mov $5,%bh
    
    //        movb %bl,(%eax)
    
    //        add $1,%eax
    
    //        mov %bh,(%eax)
    
    //    ");
        //*pt=*pa*(step_all-step_now)/step_all+*pb*step_now/step_all;
    //    __asm("
    //        mov stepall,%eax
    
    //        mov stepnow,%ebx
    
    //        sub %ebx,%eax
    
    //        mov pa,%ebx
    
    //        mov (%ebx),%bx
    
    //        mul %bx
    
    //        mov stepall,%ebx
    
    //        div %bx
    
    //        mov %eax,%ecx
    
    //        mov pb,%eax
    
    //        mov (%eax),%eax
    
    //        mov stepnow,%ebx
    
    //        mul %ebx
    
    //        mov stepall,%ebx
    
    //        div %bl
    
    //        add %cl,%al
    
    //        mov %al,c
    
    //    ");    
        printf("c=%d",c);
        return 0;
    }
  • 相关阅读:
    ThinkPHP3.2 整合支付宝RSA加密方式
    代码风格规范
    Mac下安装composer
    MAC 下安装RabbitMQ
    Redis配置
    git 分支
    PHP常用数组操作方法汇总
    php 不用第三个变量 交换两个变量的值汇总
    PHP配置错误信息回报的等级
    Apache同一个IP上配置多域名
  • 原文地址:https://www.cnblogs.com/LPworld/p/14060667.html
Copyright © 2020-2023  润新知