男女午夜激情_www.天堂av.com_亚洲综合小说区_亚洲欧美自拍视频_成年精品_久久www免费人成—看片_激情综合五月天_久久高潮视频_最新国产成人ab网站_国产精品卡一

機電之家資源網
單片機首頁|單片機基礎|單片機應用|單片機開發|單片機文案|軟件資料下載|音響制作|電路圖下載 |嵌入式開發
培訓信息
贊助商
pic乘除運算子程序
pic乘除運算子程序
 更新時間:2008-7-26 20:30:46  點擊數:3
【字體: 字體顏色

, pic乘除運算子程序 

#define    STATUS    3

#define    skpb    skpnc    ;skip if borrowed
#define    skpnb    skpc    ;skip if no borrow

    cblock    0x10
PROD:2            ;2 bytes for production
QUOT:2            ;2 bytes for quotient
PAVRA            ;divider/multiplier
PAVRB            ;reminder / multiplier
PAVRC            ;additional byte space
mcount            ;loop counter
    endc

    org    000h

    ;MOVlw    0x20;
    ;MOVwf    PAVRA
    ;MOVlw    0x30
    ;MOVwf    PAVRB

    call    BBYTE_DIV

    goto    $-1

;====================================
;PROD:2 = PAVRA * PAVRB
;====================================
BYTE_MUL
    clrf    PROD
    clrf    PROD+1
    MOVlw    .8
    MOVwf    mcount
_mul1
    rlf    PROD,f        ;left shift 16-bit with LSB=0
    bcf    PROD,0
    rlf    PROD+1,f    
    rlf    PAVRA,w        ;make left-rotate shift
    rlf    PAVRA,f        ;and check MSB
    skpc            ;skip if MSB=1
    goto    _mul2        ;MSB=0
    ;do when MSB=1
    MOVf    PAVRB,w
    addwf    PROD,f
    skpnc
    incf    PROD+1,f
_mul2    
    decfsz    mcount,f
    goto    _mul1    
    retlw    0


;====================================
;WORD divided by BYTE               =
;PROD:2 / PAVRA                     = 
;QUOT:2 = Quotient                  =
;PAVRB  = Reminder                  =
;====================================
WBYTE_DIV
    MOVf    PAVRA,f
    skpnz
    retlw    1        ;return if divider=0
    clrf    PAVRB
    clrf    PAVRC
    clrf    QUOT
    clrf    QUOT+1
    MOVlw    .16
    MOVwf    mcount
_wdiv1
    rlf    QUOT,f        ;adjust Quotient
    rlf    QUOT+1,f
    bcf    QUOT,0
    ;
    rlf    PROD+1,w
    rlf    PROD,f
    rlf    PROD+1,f
    ;
    rlf    PAVRB,f
    rlf    PAVRC,f
    ;
    MOVf    PAVRA,w
    subwf    PAVRB,f
    skpb            ;skip if borrow
    goto    _wdiv2
    ;if borrow
    btfsc    PAVRC,0
    goto    _wdiv2
    addwf    PAVRB,f
    bcf    PAVRC,0
    goto    _wdiv3
_wdiv2    ;if no borrow
    bcf    PAVRC,0
    bsf    QUOT,0    
_wdiv3
    decfsz    mcount,f
    goto    _wdiv1    
    retlw    0

;====================================
;BYTE divided by BYTE               =
;PROD[0] / PAVRA                    = 
;QUOT[0] = Quotient                 =
;PAVRB   = Reminder                 =
;====================================
BBYTE_DIV
    MOVf    PAVRA,f
    skpnz
    retlw    1        ;return if divider=0
    clrf    PAVRB        ;clear reminder
    clrf    QUOT        ;clear quotient
    MOVlw    .8
    MOVwf    mcount        ;for 8 times shift
_bdiv1
    rlf    QUOT,f        ;adjust Quotient
    bcf    QUOT,0        ;left shift i bit
    ;
    rlf    PROD,w        ;get 1 bit, MSB first
    rlf    PROD,f        ;do rotate shift
    ;
    rlf    PAVRB,f        ;set to LSB of reminder
    ;
    MOVf    PAVRA,w        ;reminder - divider
    subwf    PAVRB,f
    skpb            ;skip if borrow
    goto    _bdiv2
    ;do if borrowed
    addwf    PAVRB,f        ;cancel subtraction
    goto    _bdiv3        ;go for next
_bdiv2    ;do if no borrow
    bsf    QUOT,0        ;reminder > divider
                ;update quotient
_bdiv3
    decfsz    mcount,f    ;loop test
    goto    _bdiv1        ;do 8 times
    retlw    0        ;completed

    END

 

  • 上一篇: 用軟件仿真串口
  • 下一篇: PIC模擬異步串行通訊UART
  • 發表評論   告訴好友   打印此文  收藏此頁  關閉窗口  返回頂部
    熱點文章
     
    推薦文章
     
    相關文章
    網友評論:(只顯示最新5條。)
    關于我們 | 聯系我們 | 廣告合作 | 付款方式 | 使用幫助 | 機電之家 | 會員助手 | 免費鏈接

    點擊這里給我發消息66821730(技術支持)點擊這里給我發消息66821730(廣告投放) 點擊這里給我發消息41031197(編輯) 點擊這里給我發消息58733127(審核)
    本站提供的機電設備,機電供求等信息由機電企業自行提供,該企業負責信息內容的真實性、準確性和合法性。
    機電之家對此不承擔任何保證責任,有侵犯您利益的地方請聯系機電之家,機電之家將及時作出處理。
    Copyright 2007 機電之家 Inc All Rights Reserved.機電之家-由機電一體化網更名-聲明
    電話:0571-87774297 傳真:0571-87774298
    杭州濱興科技有限公司提供技術支持

    主辦:杭州市高新區(濱江)機電一體化學會
    中國行業電子商務100強網站

    網站經營許可證:浙B2-20080178-1
    主站蜘蛛池模板: 阜宁县| 通州区| 山西省| 祁阳县| 崇明县| 安新县| 潮安县| 宁南县| 阳曲县| 大荔县| 申扎县| 峨眉山市| 永善县| 泽普县| 灵宝市| 清水县| 广灵县| 康定县| 綦江县| 巴林右旗| 昆山市| 罗山县| 南漳县| 义乌市| 西城区| 昌邑市| 永修县| 南康市| 庄河市| 固镇县| 泰兴市| 渭源县| 蓬溪县| 玉山县| 南开区| 宝应县| 宝应县| 建昌县| 云和县| 崇文区| 独山县|