《電子技術(shù)應(yīng)用》
您所在的位置:首頁 > 嵌入式技術(shù) > 解決方案 > PIC乘法程序

PIC乘法程序

2009-01-16
關(guān)鍵詞: 單片機 PIC

PIC乘法程序一

;*******************************************************************
;                   8x8 Software Multiplier
;               ( Code Efficient : Looped Code )
;*******************************************************************
;
;   The 16 bit result is stored in 2 bytes
;
; Before calling the subroutine " mpy ", the multiplier should
; be loaded in location " mulplr ", and the multiplicand in
; " mulcnd " . The 16 bit result is stored in locations
; H_byte & L_byte.
;
;       Performance :
;                       Program Memory  :  15 locations
;                       # of cycles     :  71
;                       Scratch RAM     :   0 locations
;
;  This routine is optimized for code efficiency ( looped code )
;  For time efficiency code refer to "mult8x8F.asm" ( straight line code )
;*******************************************************************
;
mulcnd  equ     09      ; 8 bit multiplicand
mulplr  equ     10      ; 8 bit multiplier
H_byte  equ     12      ; High byte of the 16 bit result
L_byte  equ     13      ; Low byte of the 16 bit result
count   equ     14      ; loop counter
;
;
 include         "picreg.h"
;
; *****************************         Begin Multiplier Routine
mpy_S   clrf    H_byte
 clrf    L_byte
 movlw   8
 movwf   count
 movf    mulcnd,w
 bcf     STATUS,CARRY    ; Clear the carry bit in the status Reg.
loop    rrf     mulplr
 btfsc   STATUS,CARRY
 addwf   H_byte,Same
 rrf     H_byte,Same
 rrf     L_byte,Same
 decfsz  count
 goto    loop
;
 retlw   0
;
;*************************************************************
;               Test Program
;**************************************************************
main    movlw   0FF
 movwf   mulplr          ; multiplier (in mulplr) = 0FF
 movlw   0FF             ; multiplicand(W Reg )   = 0FF
 movwf   mulcnd
;
 call    mpy_S           ; The result 0FF*0FF = FE01 is in locations
;                               ; H_byte & L_byte
;
self    goto    self
;
 org     01FF
 goto    main
;
 END

PIC乘法程序二:

;*******************************************************************
;                   8x8 Software Multiplier
;               ( Fast Version : Straight Line Code )
;*******************************************************************
;
;   The 16 bit result is stored in 2 bytes
;
; Before calling the subroutine " mpy ", the multiplier should
; be loaded in location " mulplr ", and the multiplicand in
; " mulcnd " . The 16 bit result is stored in locations
; H_byte & L_byte.
;
;       Performance :
;                       Program Memory  :  35 locations
;                       # of cycles     :  37
;                       Scratch RAM     :   0 locations
;
;  This routine is optimized for speed efficiency ( straight line code )
;  For code efficiency, refer to "mult8x8S.asm" ( looped code )
;*******************************************************************
;
mulcnd  equ     09      ; 8 bit multiplicand
mulplr  equ     10      ; 8 bit multiplier
H_byte  equ     12      ; High byte of the 16 bit result
L_byte  equ     13      ; Low byte of the 16 bit result
;
;
 include         "picreg.h"
;
;****   Define a macro for adding & right shifting  **
;
mult    MACRO   bit             ; Begin macro
 btfsc   mulplr,bit
 addwf   H_byte,Same
 rrf     H_byte,Same
 rrf     L_byte,Same
 ENDM                    ; End of macro
;
; *****************************         Begin Multiplier Routine
mpy_F   clrf    H_byte
 clrf    L_byte
 movf    mulcnd,w        ; move the multiplicand to W reg.
 bcf     STATUS,CARRY    ; Clear the carry bit in the status Reg.
 mult    0
 mult    1
 mult    2
 mult    3
 mult    4
 mult    5
 mult    6
 mult    7
;
 retlw   0
;
;********************************************************************
;               Test Program
;*********************************************************************
main    movlw   0FF
 movwf   mulplr          ; multiplier (in mulplr)     = 0FF
 movlw   0FF
 movwf   mulcnd          ; multiplicand(in mulcnd )   = 0FF
;
 call    mpy_F           ; The result 0FF*0FF = FE01 is in locations
;                               ; H_byte & L_byte
;
self    goto    self
;
 org     01FF
 goto    main
;
 END

本站內(nèi)容除特別聲明的原創(chuàng)文章之外,轉(zhuǎn)載內(nèi)容只為傳遞更多信息,并不代表本網(wǎng)站贊同其觀點。轉(zhuǎn)載的所有的文章、圖片、音/視頻文件等資料的版權(quán)歸版權(quán)所有權(quán)人所有。本站采用的非本站原創(chuàng)文章及圖片等內(nèi)容無法一一聯(lián)系確認版權(quán)者。如涉及作品內(nèi)容、版權(quán)和其它問題,請及時通過電子郵件或電話通知我們,以便迅速采取適當措施,避免給雙方造成不必要的經(jīng)濟損失。聯(lián)系電話:010-82306118;郵箱:aet@chinaaet.com。
主站蜘蛛池模板: 国产高清精品入口91| 777亚洲精品乱码久久久久久| 99久久中文字幕伊人| 高清欧美一级在线观看| 粗壮挺进邻居人妻| 晓青老师的丝袜系列| 女偶像私下的y荡生活| 国产孕妇孕交大片孕| 亚洲综合视频在线| 亚洲精品国产成人| 中文字幕电影在线| 1000又爽又黄禁片在线久| 野花日本免费观看高清电影8| 欧美精品v国产精品v日韩精品 | 曰批全过程免费视频在线观看无码 | 欧日韩不卡在线视频| 天堂资源bt种子在线| 国产三级精品三级在线观看| 亚洲国产成人久久精品软件| www.色综合| 色吊丝在线永久观看最新版本| 欧美又粗又长又爽做受| 女人的精水喷出来视频| 国产三级在线观看| 亚洲a级片在线观看| 97碰在线视频| 秦91在线播放第3集全球直播| 日b视频免费看| 国产成人精品日本亚洲直接| 亚洲欧洲无码av不卡在线| √天堂资源中文官网bt| 荡乱妇3p疯狂伦交下载阅读| 最近免费观看高清韩国日本大全| 国产麻豆一精品一av一免费| 免费国产va在线观看视频| 中文字幕日韩高清版毛片| 黄色a级片在线观看| 欧美69vivohd| 国产精品国产高清国产av| 亚洲福利在线观看| chinese体育男白袜videogay|