1. <ul id="0c1fb"></ul>

      <noscript id="0c1fb"><video id="0c1fb"></video></noscript>
      <noscript id="0c1fb"><listing id="0c1fb"><thead id="0c1fb"></thead></listing></noscript>

      99热在线精品一区二区三区_国产伦精品一区二区三区女破破_亚洲一区二区三区无码_精品国产欧美日韩另类一区

      RELATEED CONSULTING
      相關(guān)咨詢
      選擇下列產(chǎn)品馬上在線溝通
      服務(wù)時間:8:30-17:00
      你可能遇到了下面的問題
      關(guān)閉右側(cè)工具欄

      新聞中心

      這里有您想知道的互聯(lián)網(wǎng)營銷解決方案
      如何用匯編和C語言寫流水燈程序

      本篇內(nèi)容介紹了“如何用匯編和C語言寫流水燈程序”的有關(guān)知識,在實際案例的操作過程中,不少人都會遇到這樣的困境,接下來就讓小編帶領(lǐng)大家學習一下如何處理這些情況吧!希望大家仔細閱讀,能夠?qū)W有所成!

      網(wǎng)站建設(shè)公司,為您提供網(wǎng)站建設(shè),網(wǎng)站制作,網(wǎng)頁設(shè)計及定制網(wǎng)站建設(shè)服務(wù),專注于企業(yè)網(wǎng)站建設(shè),高端網(wǎng)頁制作,對成都資質(zhì)代辦等多個行業(yè)擁有豐富的網(wǎng)站建設(shè)經(jīng)驗的網(wǎng)站建設(shè)公司。專業(yè)網(wǎng)站設(shè)計,網(wǎng)站優(yōu)化推廣哪家好,專業(yè)seo優(yōu)化優(yōu)化,H5建站,響應(yīng)式網(wǎng)站。

      現(xiàn)在可能很少看到匯編程序了,但單片機的啟動文件、RTOS底層代碼等一些地方,依然還有匯編代碼的身影。

      不知道大家有沒有學過匯編,或者有沒有用匯編語言編過程?

      今天就給大家分享一下匯編語言的那些事。

      1學習匯編語言

      我在10年學習單片機編程的時候,老師教學都還是用匯編教我們,包括教學實驗,也是要求我們用匯編寫程序。

      MOV  A,#00H MOV  P1,A

      我記得那會兒,老師要求我們把匯編指令背下來。雖然現(xiàn)在很多匯編指令寫不出來了,但看到很多匯編代碼,還是基本明白它的意思。

      以前計算機三級(PC技術(shù))的上機考試,就是用匯編編程,我那個時候上機考試還是滿分。當時覺得自己很牛逼,現(xiàn)在看來就是一菜鳥圖片

      2匯編轉(zhuǎn)C語言

      剛開始學習匯編那會兒,我真的用匯編在51單片機上寫流水燈程序。后面看了用C語言寫流水燈程序,突然發(fā)現(xiàn),哇,用C語言寫程序還能這么簡單、方便。

      于是,我就那個時候開始放棄了匯編,轉(zhuǎn)向了C語言。包括后面我在大學實驗室自己學習、DIY做東西、以及后面的全國大學生電子設(shè)計競賽,都是用C語言編寫的程序。

      10行匯編程序,可能只需要一行C語言代碼就能實現(xiàn),這是C語言相比匯編簡化的優(yōu)點。

      但是,C語言編寫的程序,經(jīng)過編譯,也會轉(zhuǎn)為匯編。比如我們在線調(diào)試代碼的時候,會看到類似的“匯編窗口”:

      如何用匯編和C語言寫流水燈程序

      因為以前單片機的運行速度不高,且內(nèi)存和Flash容量不大,要求節(jié)約程序空間。

      所以使用匯編的優(yōu)點:代碼運行效率更高、更節(jié)約代碼存儲空間。

      3對比用匯編和C語言寫流水燈程序

      匯編語言寫程序的主要缺點:語法復(fù)雜、可讀性差、代碼量大等。

      下面分享一個實例:51單片機上的流水燈程序。分別用C語言和匯編寫出來,大家對比一下就知道了。

      C語言版:

      /******************** 宏定義 **************************/ #define   MAIN_Fosc    22118400L  //定義主時鐘  /******************** 延時函數(shù) **************************/ void  delay_ms(u8 ms) {      u16 i;    do{         i = MAIN_Fosc / 13000;       while(--i)  ;   //14T per loop      }while(--ms); }  /******************** 主函數(shù) **************************/ void main(void) {   P0M1 = 0;  P0M0 = 0;  //設(shè)置為準雙向口   P1M1 = 0;  P1M0 = 0;  //設(shè)置為準雙向口   P2M1 = 0;  P2M0 = 0;  //設(shè)置為準雙向口   P3M1 = 0;  P3M0 = 0;  //設(shè)置為準雙向口   P4M1 = 0;  P4M0 = 0;  //設(shè)置為準雙向口   P5M1 = 0;  P5M0 = 0;  //設(shè)置為準雙向口   P6M1 = 0;  P6M0 = 0;  //設(shè)置為準雙向口   P7M1 = 0;  P7M0 = 0;  //設(shè)置為準雙向口    while(1)   {     P17 = 0;     delay_ms(250);     delay_ms(250);     P17 = 1;     P16 = 0;     delay_ms(250);     delay_ms(250);     P16 = 1;     P47 = 0;     delay_ms(250);     delay_ms(250);     P47 = 1;     P46 = 0;     delay_ms(250);     delay_ms(250);     P46 = 1;   } }

      匯編語言版:

      ;******************** 宏定義 **************************/ Fosc_KHZ  EQU  22118  ;22118KHZ  STACK_POIRTER  EQU    0D0H  ;堆棧開始地質(zhì)   ;******************** 延時函數(shù) **************************/ F_delay_ms:   PUSH  02H    ;入棧R2   PUSH  03H    ;入棧R3   PUSH  04H    ;入棧R4    MOV    R2,A  L_delay_ms_1:   MOV    R3, #HIGH (Fosc_KHZ / 13)   MOV    R4, #LOW (Fosc_KHZ / 13)    L_delay_ms_2:   MOV    A, R4      ;1T    Total 13T/loop   DEC    R4        ;2T   JNZ    L_delay_ms_3  ;4T   DEC    R3 L_delay_ms_3:   DEC    A        ;1T   ORL    A, R3      ;1T   JNZ    L_delay_ms_2  ;4T      DJNZ  R2, L_delay_ms_1    POP    04H    ;出棧R2   POP    03H    ;出棧R3   POP    02H    ;出棧R4   RET   ;******************** 主程序 **************************/     ORG    0100H    ;reset F_Main:   CLR    A   MOV    P0M1, A   ;設(shè)置為準雙向口    MOV    P0M0, A   MOV    P1M1, A   ;設(shè)置為準雙向口    MOV    P1M0, A   MOV    P2M1, A   ;設(shè)置為準雙向口    MOV    P2M0, A   MOV    P3M1, A   ;設(shè)置為準雙向口    MOV    P3M0, A   MOV    P4M1, A   ;設(shè)置為準雙向口    MOV    P4M0, A   MOV    P5M1, A   ;設(shè)置為準雙向口    MOV    P5M0, A   MOV    P6M1, A   ;設(shè)置為準雙向口    MOV    P6M0, A   MOV    P7M1, A   ;設(shè)置為準雙向口    MOV    P7M0, A    MOV    SP, #STACK_POIRTER   MOV    PSW, #0    ;選擇第0組R0~R7  L_MainLoop:   CLR    P1.7   MOV    A, #250   LCALL  F_delay_ms    ;延時250ms   LCALL  F_delay_ms    ;延時250ms   SETB  P1.7    CLR    P1.6   MOV    A, #250   LCALL  F_delay_ms    ;延時250ms   LCALL  F_delay_ms    ;延時250ms   SETB  P1.6    CLR    P4.7   MOV    A, #250   LCALL  F_delay_ms    ;延時250ms   LCALL  F_delay_ms    ;延時250ms   SETB  P4.7    CLR    P4.6   MOV    A, #250   LCALL  F_delay_ms    ;延時250ms   LCALL  F_delay_ms    ;延時250ms   SETB  P4.6    SJMP  L_MainLoop

      上面兩個程序,實現(xiàn)的功能都一樣(流水燈),但對比代碼,大家發(fā)現(xiàn)有啥區(qū)別?

      對于有匯編基礎(chǔ)的同學來說,可能這個簡單的流水燈程序還是很好理解。

      但是,對于大部分人來說,肯定都會覺得匯編很難讀。是的,這個是匯編的“特點”。

      4最后

      匯編語法,對于絕大部分讀者來說,我現(xiàn)在是不建議再深入學習了,只需要了解一些基礎(chǔ)的內(nèi)容即可。

      有少部分人,想從事底層開發(fā),比如底層驅(qū)動、單片機驗證、固件庫開發(fā)等這些讀者,有時間還是可以進一步了解匯編的一些技術(shù)。

      “如何用匯編和C語言寫流水燈程序”的內(nèi)容就介紹到這里了,感謝大家的閱讀。如果想了解更多行業(yè)相關(guān)的知識可以關(guān)注創(chuàng)新互聯(lián)網(wǎng)站,小編將為大家輸出更多高質(zhì)量的實用文章!


      分享題目:如何用匯編和C語言寫流水燈程序
      URL鏈接:http://ef60e0e.cn/article/piojdh.html
      99热在线精品一区二区三区_国产伦精品一区二区三区女破破_亚洲一区二区三区无码_精品国产欧美日韩另类一区
      1. <ul id="0c1fb"></ul>

        <noscript id="0c1fb"><video id="0c1fb"></video></noscript>
        <noscript id="0c1fb"><listing id="0c1fb"><thead id="0c1fb"></thead></listing></noscript>

        建德市| 海宁市| 冀州市| 花垣县| 巧家县| 龙泉市| 安国市| 柯坪县| 东宁县| 夏邑县| 揭西县| 垦利县| 屏东市| 常山县| 池州市| 金坛市| 德兴市| 兴隆县| 深水埗区| 全南县| 界首市| 旬邑县| 原阳县| 枝江市| 甘洛县| 桂阳县| 汾阳市| 隆子县| 芒康县| 乌拉特前旗| 海原县| 武安市| 博兴县| 太保市| 景泰县| 靖远县| 鱼台县| 财经| 壤塘县| 禹城市| 台南县|