• <li id="00i08"><input id="00i08"></input></li>
  • <sup id="00i08"><tbody id="00i08"></tbody></sup>
    <abbr id="00i08"></abbr>
  • 新聞中心

    EEPW首頁 > 嵌入式系統 > 設計應用 > 51單片機多字節的除法

    51單片機多字節的除法

    作者: 時間:2012-08-24 來源:網絡 收藏


    ;雙字節除雙字節的程序如下:

    ;雙字節的
    ;只是8位的,但有時候需要實現雙字節,里面的指令只支持8位。
    ;想來想去,只好用減法來實現了。下面這個子程序是雙字節除以雙字節,商、余數結果都是雙字節保存,可能有點消耗資源,但這樣可以整合在一塊。
    ;****************************************
    ;函數名稱:Div2Byte
    ;功能描述:無符號數雙字節
    ;傳入參數:R0R1被除數 R2R3除數
    ;返回數據:R4R5商 R6R7余數
    ;其他說明:比如雙字節數R0R1,R0高字節 R1低字節
    ;****************************************
    Div2Byte:
    mov r0,#0ffh
    mov r1,#0ffh
    mov r2,#0
    mov r3,#254

    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
    add A,#1 ;之后JNC判斷,故不用INC
    mov R5,A
    jnc Div2Byte_2
    inc R4 ;商加1
    Div2Byte_2:
    mov A,R1
    mov R7,A
    mov A,R0
    mov R6,A ;更新余數
    LJMP Div2Byte_1
    Div2Byte_3:
    nop

    END


    ;兩個程序均驗證無誤!我也是在網上抄來,然后調試的。在這里特別感謝提供這個程序并發到網上的同行們!

    ;我覺得我們搞單片機這一塊的人都非常非常的友好,不象有的行當,學會了一點點就開始保密保守,那樣事

    ;業怎么可能發展?我的口號是: 不保密,不保守,共同提高。要想比別人更強更高,那就付出更多

    三極管相關文章:三極管放大電路


    51單片機相關文章:51單片機教程



    上一頁 1 2 下一頁

    評論


    相關推薦

    技術專區

    關閉
    主站蜘蛛池模板: 祁连县| 明溪县| 股票| 大足县| 平乡县| 苗栗市| 宁南县| 铜鼓县| 友谊县| 湖北省| 香河县| 东乡县| 定陶县| 汉沽区| 新乐市| 谢通门县| 宝清县| 开原市| 龙口市| 普陀区| 芜湖市| 浦北县| 金山区| 梁平县| 安达市| 兴宁市| 上思县| 瑞金市| 双桥区| 枣强县| 广宗县| 灵山县| 福泉市| 锦屏县| 莲花县| 沭阳县| 连云港市| 安多县| 错那县| 海兴县| 长寿区|