新聞中心

        EEPW首頁 > 嵌入式系統 > 設計應用 > 單片機第四次作業

        單片機第四次作業

        作者: 時間:2016-11-25 來源:網絡 收藏
        作業:多字節無符號數加法運算程序
        入口:R0=被加數低位地址指針
        R1=加數低位地址指針
        出口:R0=和數高位地址指針
        1、先fileànew建asm文件18.asm
        CLR C
        LOOP1:MOV A,@R0
        ADDC A,@R1
        MOV @R0,A
        INC R0
        INC R1
        DJNZ R2,LOOP1
        JNC LOOP2
        MOV @R0,#01H
        RET
        LOOP2:DEC R0
        RET
        END

        為了調試時看數據,預先賦值,所以程序前加:
        MOV 30H,#78H
        MOV 31H,#56H
        MOV 32H,#34H
        MOV 33H,#12H
        MOV 40H,#0F0H
        MOV 41H,#0DEH
        MOV 42H,#0BCH
        MOV 43H,#9AH
        MOV R0,#30H
        MOV R1,#40H
        MOV R2,#4
        2、建新工程,Projectànewproject,選AtemlàAT89C51,導入文件18.asm。
        注意,對初學者,一個工程里只能有本程序18.asm,無關的程序要刪除,新試驗一個程序最好重新建工程,以保證一個工程里只有你要試驗的那一個程序。

        3、可見程序:


        4、編譯通過后,點debug下的start/stop開始調試,step和stepover都是單步調試,step是遇到子程序或中斷也要進入進行單步調試,stepover是遇到子程序或中斷當一句一次執行完。本程序物子程序,二者是一樣的。我們執行賦值語句得到:


        點viewàmemorywindows,再輸入D:30h回車,得到:



        接著執行:可見R0,R1,R2值的改變:

        繼續執行:



        下一步:


        下一步:

        可見:30H內容變為68H.
        下一步:


        R0,R1值都加一,繼續:


        可見R2值減1,但不為0,所以跳轉到LOOP1.繼續:經過幾次循環之后,直到R2變為0,此時不再循環,可看到:

        30H,31H,32,,3H值都已改變。繼續執行:


        此時CY不為0,所以跳轉到LOOP2。


        可看到r0減1,變為33H,即為和數高位地址指針,指向33h處。



        關鍵詞: 單片機地址指

        評論


        技術專區

        關閉
        主站蜘蛛池模板: 华容县| 故城县| 黑水县| 修水县| 新乡市| 宜阳县| 四子王旗| 治多县| 莒南县| 武鸣县| 吴旗县| 雷山县| 雷州市| 边坝县| 嘉黎县| 东乌| 克什克腾旗| 晋城| 乌审旗| 石柱| 资兴市| 长汀县| 久治县| 从化市| 互助| 东安县| 通辽市| 普宁市| 达拉特旗| 紫阳县| 闻喜县| 大竹县| 沙湾县| 青浦区| 武陟县| 丘北县| 昌吉市| 任丘市| 杭锦后旗| 抚松县| 临海市|