PIC彙編入門樣本

來源:互聯網
上載者:User

標籤:數值   定址   cfs   top   指令   指定   單元   main   swa   

順序程式結構

將20H單元低4位取出存入21H,高四位取出存入22H
要點:ANDLW和SWAPF

  MOVF     20H,0      ;將20H單元的內容送人W  ANDLW    0FH        ;W高四位清零低4位保持不變  MOVWF    21H        ;將拆分後的低4位送21H  SWAPF    20H,0      ;將20H單元內容高、低半位元組換位後送W  ANDLW    0FH        ;再將W高四位清0低四位保持不變  MOVWF    22H        ;將拆分後的高四位送22H單元
分支程式結構

RAM中20H和21H單元存放2個數,找出大著存入22H單元
要點:兩數做減法,判斷標誌位C的值

STATUS    EQU      03H      ;定義STATUS寄存器地址為03HC         EQU      0        ;定義進位/借位標誌C在STATUS中得地址為0          MOVF     20H 0    ;將20H單元的內容送人W          SUBWF    21H 0    ;用21H單元的內容減去W中的內容,結果存在W中          BTFSS    STATUS,C ;若C=1,沒借位,則21H單元中的數大,跳到F21BIG          GOTO     F20BIG   ;若C=0,有借位,20H單元中得數較大,則跳至F20BIG    F21BIG    MOVF    21H,0     ;將21H中的內容存入W寄存器          MOVWF   22H       ;再將它轉存到22H單元          GOTO    STOP      ;跳過下面兩條指令到程式末尾        F20BIG    MOVF    20H,0     ;將20H中的內容存入W寄存器          MOVWF   22H       ;再將它轉存到22H單元STOP      GOTO    STOP      ;任務完成,停機,原地踏步
迴圈程式結構

資料存放區器中,從地址30H開始的50個單元全部寫入00H
要點:間接定址寄存器FSR當做地址指標

COUNT   EQU      20H        ;指定20H單元作為循壞次數計數器(即迴圈變數)FSR     EQU      04H        ;定義FSR寄存器地址為04HINDF    EQU      00H        ;設定INDF寄存器地址為00H        MOVLW    D50        ;把計數器初值50送入W        MOVWF    COUNT      ;再把50轉入計數器(作為迴圈變數的操作值)        MOVLW    30H        ;把30H(起始地址)送入W        MOVWF    FSR        ;再把30H轉入寄存器FSR(用作地址指標)        NEXT    CLRF     INDF       ;把以FSR內容為地址所指定的單元清0        INCF     FSR,1      ;地址指標內容加1,指向下一單元        DECFSZ   COUNT,1    ;計數值減1,結果為0就跳過到下一條指令到STOP處        GOTO     NEXT       ;跳回去並執行下一次迴圈STOP    GOTO     STOP       ;迴圈結束之後執行該語句,實現停機
子程式結構

3個數最大者放入40H單元

STATUS    EQU        03HC         EQU        00HX         EQU        20HY         EQU        21HZ         EQU        22H
主程式
MAIN    MOVF    30H,0        MOVWF   X        MOVF    21H,0        MOVWF   Y        CALL    SUB        MOVF    Z,0        MOVWF   X        MOVF    32H,0        MOVWF   Y        CALL    SUB        MOVF    Z,0        MOVWF   40HSTOP    GOTO    STOP
子程式

子程式:(入口參數:X和Y,出口參數:Z)

SUB     MOVF     X,0        ;將X內容送人W        SUBWF    Y,0        ;Y內容減去W內容,結果存入W        BTFSS    STATUS,C   ;若C=1,沒有發生借位,執行下一條,否則跳轉        GOTO     X_BIG                Y_BIG   MOVF    Y,0         ;將Y中的資料送入W        MOVWF    Z          ;再將它轉存到Z        GOTO     THEEND     ;跳過下面兩條到末尾        X_BIG   MOVF    X,0         ;將X中的資料送入W        MOVWF    Z          ;再將它轉存到ZTHEEND  RETURN              ;子程式返回

PIC彙編入門樣本

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.