Thông báo

Collapse
No announcement yet.

Nhờ ACE giúp đỡ về vấn đề tối ưu C so với ASM trong cùng 1 yêu cầu bài toán!!!

Collapse
X
 
  • Lọc
  • Giờ
  • Show
Clear All
new posts

  • Nhờ ACE giúp đỡ về vấn đề tối ưu C so với ASM trong cùng 1 yêu cầu bài toán!!!

    Chào toàn thể ACE! Mình không đc học VĐK mà chỉ vì đam mê nên tự học và sưu tầm cho thỏa niềm đam mê. Chính vì thế mọi thứ đều rất khó khăn vì mình chỉ hiểu về logic và kỹ thuật số, còn về các ngôn ngữ lập trình thì bắt đầu từ con số không.Sau khi sưu tầm và tìm hiểu, mình có thấy cùng 1 bài toán mà dung lượng file Hex sau khi dịch từ C lớn hơn rất nhiều so với từ ASM(mặc dù vẫn đc ACE khuyến cáo là C thì tốn tài nguyên Rom hơn). Vậy mình xin mạo muội đưa lên đây 1 ví dụ :'' sáng lần lượt 32 led" cả code C và ASM .Để nhờ ACE chỉ giúp xem có cách nào tối ưu hơn không. Xin cảm ơn ACE!
    ah mình xin nói thêm là dùng Proload kiểm tra đc file Hex từ C là 253 Bytes còn từ ASM chỉ có 47 Bytes...
    code C:
    #include "reg52.h"//khai bao thu vien cho ho 89x52
    #include "intrins.h"
    void delay(unsigned int ms)
    {
    unsigned int i;
    unsigned char j;
    for(i=0;i<ms;i++)
    for(j=0;j<120;j++)
    {}
    }
    main()
    {
    while(1)
    {
    unsigned int k,x;
    P0=P2=P3=P1=0x00;
    delay(1000);
    x=0x01;
    for(k=0;k<8;k++){
    P0=x;
    delay(1000);//tre
    x=_crol_(x,1); // quay trai bien x 1 don vi
    }
    for(k=0;k<8;k++){
    P0=0x00;
    P1=x;
    delay(1000);//tre
    x=_crol_(x,1); // quay trai bien x 1 don vi
    }
    for(k=0;k<8;k++){
    P1=0x00;
    P2=x;
    delay(1000);//tre
    x=_crol_(x,1); // quay trai bien x 1 don vi
    }
    for(k=0;k<8;k++){
    P2=0x00;
    P3=x;
    delay(1000);//tre
    x=_crol_(x,1); // quay trai bien x 1 don vi
    }
    }}

    code ASM :
    ORG 000H ; khai bao dia chi de bat dau chuong trinh tren Rom

    Mov P0,#0 ;===>>>> ||| tat tat ca ca led
    Mov P1,#0 ;===>>>> |||
    Mov P2,#0 ;===>>>> |||
    Mov P3,#0 ;===>>>> |||
    SetB C ;===>>>> lam co C len 1
    Xoay32bit:
    Mov A,P0 ;||||||||||
    RLC A ;||||||||||===>>>> xoay trai P0 voi co nho C
    Mov P0,A ;||||||||||
    Mov A,P1 ;@@@@
    RLC A ;@@@@ ===>>>> xoay trai P1 voi co nho C
    Mov P1,A ;@@@@
    Mov A,P2 ;#####
    RLC A ;##### ===>>>> xoay trai P2 voi co nho C
    Mov P2,A ;#####
    Mov A,P3 ;!!!!!!!!!!!
    RLC A ;!!!!!!!!!!!===>>>> xoay trai P3 voi co nho C
    Mov P3,A ;!!!!!!!!!!!
    LCall Delay ;===>>>>goi chuong trinh con Delay
    Sjmp Xoay32bit ;===>>>> nhay ve thuc hien tu dau

    ;**>>>>>>>>>>>>>>>>>>>>>>>>>>>>>> Delay <<<<<<<<<<<<<<<<<<<<<<<<<<<<
    Delay:
    Mov R7,#0FFH
    Kt2: Mov R6,#0FFH
    Kt1: Djnz R6,Kt1
    Djnz R7,Kt2
    Ret ;&&&&& ket thu chuong trinh con Delay
    ;_________________________________________________ ________________________________
    End ;===>>>> ket thuc chuong trinh

Về tác giả

Collapse

phamtuantb85 Tìm hiểu thêm về phamtuantb85

Bài viết mới nhất

Collapse

Đang tải...
X