标题: 如何将单片机C语言改成汇编语言? [打印本页]

作者: hao12138    时间: 2020-5-24 13:31
标题: 如何将单片机C语言改成汇编语言?
将以下改成简单的汇编语言,并标上备注

  1. #include<reg52.h>
  2. sbit KEY0=P0^0;
  3. sbit KEY1=P0^1;
  4. sbit KEY2=P0^2;
  5. sbit KEY3=P0^3;
  6. sbit KEY4=P0^4;
  7. unsigned chara[]={0x01,0x02,0x04,0x08};
  8. unsigned charb[]={0x08,0x04,0x02,0x01};
  9. unsigned charc[]={0xc0,0xf9,0xa4,0xb0,0x99,0x92,0x82,0xf8};
  10. unsigned chari,s=0,f=0;
  11. unsigned chark=200;
  12. unsigned char l=4;
  13. voiddelay(unsigned int t)
  14. {
  15.        unsigned char j,b;
  16. b=t;
  17.        while(b--)
  18.        {
  19.               for (j=0;j<125;j++);
  20.        }
  21. }
  22. void key()
  23. {P0=0x1f;
  24.        if(P0!=0x1f)
  25.        {delay(30);
  26.               if(P0!=0x1f)
  27.               {delay(30);
  28.        if(KEY0==0)
  29.        {s=1;}
  30.        if(KEY1==0)
  31.        {f=1;}
  32.        if(KEY4==0)
  33.        {s=0;
  34.               f=0;}
  35.        if(KEY2==0)
  36.               {if(l>1)
  37.                l--;}
  38.        if(KEY3==0)
  39.         {if(l<7)
  40.      l++;}
  41.         }}
  42.         }
  43. void speed()
  44.         {switch(l)
  45.                      {case 7:k=50;P1=c[l];break;
  46.                             case6:k=100;P1=c[l];break;
  47.                             case5:k=150;P1=c[l];break;
  48.                             case4:k=200;P1=c[l];break;
  49.                             case3:k=250;P1=c[l];break;
  50.                             case2:k=300;P1=c[l];break;
  51.                             case1:k=350;P1=c[l];break;}
  52.                      }
  53. void main()
  54. {
  55.        while(1)
  56.        {key();
  57.        while(s>0)
  58.        {speed();
  59.                      for(i=0;i<4;i++)
  60.                             {
  61.                                    P2=b[i];
  62.                                    delay(k);
  63.                                    key();
  64.                             }
  65.                             delay(100);
  66.                             key();
  67.               }
  68.       
  69.        while(f>0)
  70.        {speed();
  71.                      for(i=0;i<4;i++)
  72.                             {
  73.                                    P2=a[i];
  74.                                    delay(k);
  75.                                    key();
  76.                             }
  77.                             delay(100);
  78.                             key();
  79.               }
  80.        }
  81.        }
复制代码


51hei图片20200524133054.png (48.49 KB, 下载次数: 61)

51hei图片20200524133054.png

作者: man1234567    时间: 2020-5-25 10:21
C改汇编可以先编译C再反汇编
如果要有注释的必须先读懂C再改写成汇编没其他路子




欢迎光临 (http://www.51hei.com/bbs/) Powered by Discuz! X3.1