新聞中心

        EEPW首頁 > 嵌入式系統 > 設計應用 > 單片機匯編指令入門學習和查看

        單片機匯編指令入門學習和查看

        作者: 時間:2016-11-25 來源:網絡 收藏
        在進行匯編程序設計時,MSP430的指令系統是程序的主體,但為了方便程序編制,還定義了一些指令,這些指令不參與和影響程序的執行,也不在計算機中運行,這類指令稱為偽指令。
        一般匯編器偽指令能幫助用戶完成以下事情:
        ·將代碼和數據匯編到規定的段中
        ·在存儲器中用未初始化的變量保留空間
        ·控制匯編后列表文件的格式
        ·初始化存儲器
        ·匯編條件塊
        ·定義全局變量
        ·規定匯編器可以從中獲得宏的庫
        ·產生符號化的調試信息
        模塊控制偽指令:
        NAME,PROGRAM—程序模塊的開始
        MODULE,LIBRARY—庫模塊的開始
        ENDMOD—當前匯編模塊的結束
        END—匯編文件的結束
        符號控制偽指令:
        EXTERN(IMPORT)-引入外部符號
        PUBLIC(EXPORT)-輸出符號
        段控制偽指令:
        ASEG—絕對段的開始
        RSEG—相對段的開始
        STACK—定義堆棧 段
        COMMON—定義公共段
        ORG—定位指針
        ALIGN—校準PC
        EVEN—PC對準偶地址
        數值分配偽指令:
        SET(ASSIGN,VAR)—賦臨時值
        EQU(=)—賦永久值,當前模塊內有效
        DEFINE—定義文件內有效的值
        數據定義與分配偽指令::
        DB—定義字節(8bit)
        DW—定義字(16bit)
        DL—定義32bit整數
        DF—定義32bit float
        DS n—定義n個連續的字節
        DC8 DB 生成(8位)常量/字符串
        DC16 DW 生成(16位)常量
        DC32 DL 生成32位常量
        DC64 生成32位常量
        DF32 DF 生成32位浮點常量
        DF64 生成64位浮點常量
        .double 生成48位TI格式的 浮點常量
        .float 生成32位TI格式的 浮點常量
        DS8 DS 分配8位整數空間
        DS16 DS 2 分配16位整數空間
        DS32 DS 4 分配32位整數空間
        DS64 DS 8 分配64位整數空間
        MSP430匯編指令集
        http://wenku.baidu.com/view/62e1336bb84ae45c3b358cfe.html
        http://wenku.baidu.com/view/6a27141ca300a6c30c229f4a.html?from=related&hasrec=1
        MCS-51指令詳解
        http://www.51c51.com/web/zhilin.htm
        ;說明:為了使MCS-51單片機初學者快速入門,迅速掌握單片機指令含意、操作碼、操作數及;對應地址,匯編語言怎樣編寫等,現按指令操作碼按順序編寫,可對照本公司編寫的<>一書第145頁指令手冊查看,更詳細資料請閱 第四章 MCS-51指令系統" 及第124頁指令系統摘要。并在仿真器上裝入;JJM.HEX文件,并對有關單元置數,用單步(F8)驗證其正確性及其運行結果。
        ORG 0000H
        NOP ;空操作指令
        AJMP L0003 ;絕對轉移指令
        L0003: LJMP L0006 ;長調用指令
        L0006: RR A ;累加器A內容右移 (先置A為88H)
        INC A ; 累加器A 內容加1
        INC 01H ;直接地址(字節01H)內容加1
        INC @R0 ; R0的內容 (為地址) 的內容即間接RAM加1
        ;(設R0=02H,02H=03H,單步執行后02H=04H)
        INC @R1 ; R1的內容 (為地址) 的內容即間接RAM加1
        ;(設R1=02H,02H=03H,單步執行后02H=04H)
        INC R0 ; R0的內容加1 (設R0為00H,單步執行后查R0內容為多少)
        INC R1 ; R1的內容加1(設R1為01H,單步執行后查R1內容為多少)
        INC R2 ; R2的內容加1 (設R2為02H,單步執行后查R2內容為多少)
        INC R3 ; R3的內容加1(設R3為03H,單步執行后查R3內容為多少)
        INC R4 ; R4的內容加1(設R4為04H,單步執行后查R4內容為多少)
        INC R5 ; R5的內容加1(設R5為05H,單步執行后查R5內容為多少)
        INC R6 ; R6的內容加1(設R6為06H,單步執行后查R6內容為多少)
        INC R7 ; R7的內容加1(設R7為07H,單步執行后查R7內容為多少)
        JBC 20H,L0017; 如果位(如20H,即24H的0位)為1,則轉移并清0該位
        L0017: ACALL S0019 ;絕對調用
        S0019: LCALL S001C ;長調用
        S001C: RRC A ;累加器A的內容帶進位位右移(設A=11H,C=0
        ;單步執行后查A和C內容為多少)
        DEC A ;A的內容減1
        DEC 01H ;直接地址(01H)內容減1
        DEC @R0 ;R0間址減1,即R0的內容為地址,該地址的內容減1
        DEC @R1 ; R1間址減1
        DEC R0 ; R0內容減1
        DEC R1 ; R1內容減1
        DEC R2 ; R2內容減1
        DEC R3 ; R3內容減1
        DEC R4 ; R4內容減1
        DEC R5 ; R5內容減1
        DEC R6 ; R6內容減1
        DEC R7 ; R7內容減1
        JB 20H,L002D;如果位(20H,即24H的0位)為1則轉移
        L002D: AJMP L0017 ;絕對轉移
        RET ;子程序返回指令
        RL A ;A左移
        ADD A,#01H ;A的內容與立即數(01H)相加
        ADD A,01H ; A的內容與直接地址 (01H內容)相加
        ADD A,@R0 ; A的內容與寄存器R0的間址內容相加
        ADD A,@R1 ; A的內容與寄存器R1的間址內容相加
        ADD A,R0 ; A的內容與寄存器R0的內容相加
        ADD A,R1 ; A的內容與寄存器R1的內容相加
        ADD A,R2 ; A的內容與寄存器R2的內容相加
        ADD A,R3 ; A的內容與寄存器R3的內容相加
        ADD A,R4 ; A的內容與寄存器R4的內容相加
        ADD A,R5 ; A的內容與寄存器R5的內容相加
        ADD A,R6 ; A的內容與寄存器R6的內容相加
        ADD A,R7 ; A的內容與寄存器R7的內容相加
        JNB 30H,L0041 ;直接位(30H)為0相對轉移
        L0041: ACALL S0100 ;絕對調用
        RETI ;中斷返回指令
        RLC A ;帶進位位左移
        ADDC A,#02H ;A帶進位位與立即數(#02H)相加
        ADDC A,02H ; A帶進位位與直接地扯(02H內容)相加
        ADDC A,@R0 ; A帶進位位與R0間扯內容相加
        ADDC A,@R1 ; A帶進位位與R1間扯內容相加
        ADDC A,R0 ; A帶進位位與R0內容相加
        ADDC A,R1 ; A帶進位位與R1內容相加
        ADDC A,R2 ; A帶進位位與R2內容相加
        ADDC A,R3 ; A帶進位位與R3內容相加
        ADDC A,R4 ; A帶進位位與R4內容相加
        ADDC A,R5 ; A帶進位位與R5內容相加
        ADDC A,R6 ; A帶進位位與R6內容相加
        ADDC A,R7 ; A帶進位位與R7內容相加
        JC L0095 ;進位為1轉移
        NOP
        AJMP L0017 ;絕對轉移
        ORL 02H,A ;直接地址內容與A或
        ORL 02H,#02H ; 直接地址內容與立即數或
        ORL A,#44H ;A與立即數或
        ORL A,02H ; A與直接地址內容或
        ORL A,@R0 ; A與R0間址內容或
        ORL A,@R1 ; A與R1間址內容或
        ORL A,R0 ; A與R0內容或
        ORL A,R1 ; A與R1內容或
        ORL A,R2 ; A與R2內容或
        ORL A,R3 ; A與R3內容或
        ORL A,R4 ; A與R4內容或
        上一頁 1 2 3 4 下一頁

        評論


        技術專區

        關閉
        主站蜘蛛池模板: 独山县| 宜州市| 沙田区| 游戏| 五家渠市| 榆林市| 嘉善县| 柳州市| 沁源县| 博罗县| 景泰县| 镶黄旗| 漳浦县| 榆中县| 黑水县| 新龙县| 周口市| 钟祥市| 吕梁市| 隆尧县| 日土县| 西昌市| 萝北县| 永善县| 遂溪县| 勃利县| 昭觉县| 磐安县| 扎赉特旗| 佛山市| 临西县| 甘洛县| 曲沃县| 南溪县| 兴和县| 呼玛县| 湘潭县| 富顺县| 股票| 额济纳旗| 景德镇市|