新聞中心

        EEPW首頁 > 嵌入式系統 > 設計應用 > 單片機 雙字節除法子程序

        單片機 雙字節除法子程序

        作者: 時間:2016-11-23 來源:網絡 收藏
        8位MCU實現雙字節除法子程序

        51單片機只是8位的,但有時候需要實現雙字節除法,里面的指令只支持8位。
        想來想去,只好用減法來實現了。下面這個子程序是雙字節除以雙字節,商、余數結果都是雙字節保存,可能有點消耗資源,但這樣可以整合在一塊。
        ;****************************************
        ;函數名稱:Div2Byte
        ;功能描述:無符號數雙字節除法
        ;傳入參數:R0R1被除數 R2R3除數
        ;返回數據:R4R5商 R6R7余數
        ;其他說明:比如雙字節數R0R1,R0高字節 R1低字節
        ;****************************************
        Div2Byte:
        mov R4,#0
        mov R5,#0 ;商賦初值零
        mov A,R0
        mov R6,A
        mov A,R1
        mov R7,A ;余數賦初值,保證商為零時余數正常
        Div2Byte_1:
        mov A,R1
        clr c
        subb A,R3 ;低字節相減
        mov R1,A
        mov A,R0
        subb A,R2 ;高位相減
        mov R0,A
        jc Div2Byte_3 ;如果高字節都需要借位則退出循環
        clr c
        mov A,R5;為什么這里不直接使用INC R5????????
        add A,#1
        mov R5,A
        jnc Div2Byte_2
        inc R4 ;商加一
        Div2Byte_2:
        mov A,R1
        mov R7,A
        mov A,R0
        mov R6,A ;更新余數
        LJMP Div2Byte_1
        Div2Byte_3:
        RET
        使用示范:
        16進制雙字節數字 05D2H 除以 0105H,商是0005H,余數是00D2H
        mov R0,#5H
        mov R1,#0D2H
        mov R2,#1H
        mov R3,#5H
        lcall Div2Byte
        則結果是 R4:00H R5:05H R6:0 R7:D2H


        評論


        技術專區

        關閉
        主站蜘蛛池模板: 老河口市| 桐柏县| 叶城县| 河津市| 射阳县| 通海县| 万年县| 永胜县| 海晏县| 乌审旗| 莱阳市| 宝丰县| 淳化县| 麻阳| 石棉县| 崇信县| 曲松县| 兴安县| 沾化县| 鄂托克旗| 循化| 鸡西市| 石楼县| 揭东县| 连江县| 普定县| 汤阴县| 麦盖提县| 日照市| 军事| 石城县| 德江县| 朝阳市| 郓城县| 大姚县| 积石山| 高台县| 吐鲁番市| 苏尼特左旗| 大足县| 仁寿县|