RSS

PIC单片机应算子程序

来源: 作者: 时间:2007-01-05 Tag: 点击:


    ACCCHI     EQU     25    ;存放余数高8位
    ACCDLO     EQU     26    ;临时寄存器
    ACCDHI     EQU     27    ;临时寄存器
    TEMP     EQU     28    ;临时寄存器
    SIGN     EQU     29    ;存放商的符号
    ORG    0X0000
START    GOTO    MAIN
;***16×16位数除法子程序,入口地址ACCB /ACCA,出口地址ACCB ***
    ORG    0X0100
D_div    CALL     S_SIGN    ;确定商的符号,并将负数取补
    CALL    SETUP    ;初始化TEMP,将被除数移至ACCD,
            ;(SETUP子程序请参见16×16位定点数
            ;乘法子程序SETUP)
    INCF    TEMP
    CLRF    ACCCHI    ;清余数寄存器
    CLRF    ACCCLO
DLOOP    BCF    STATUS,C    ;清进位位
    RLF    ACCDLO    ;被除数、余数左移1位
    RLF    ACCDHI
    RLF    ACCCLO
    RLF    ACCCHI
    MOVF    ACCAHI,0    ;ACCCHI-ACCAHI
    SUBWF    ACCCHI,0
    BTFSS    STATUS,Z    ;ACCCHI=ACCAHI?
    GOTO    NOCHK
    MOVF    ACCALO,0    ;是,ACCCLO-ACCALO
    SUBWF    ACCCLO,0
NOCHK    BTFSS    STATUS,C    ;ACCC>ACCA?
    GOTO    NOGO
    MOVF    ACCALO,0    ;是,余数减除数
    SUBWF    ACCCLO
    BTFSS    STATUS,C
    DECF    ACCCHI
    MOVF    ACCAHI,0
    SUBWF    ACCCHI
    BSF    STATUS,C    ;置进位位
NOGO    RLF    ACCBLO    ;商左移1位
    RLF    ACCBHI
    DECFSZ    TEMP    ;循环完毕?
    GOTO    DLOOP
    BTFSS     SIGN,7    ;是,确定商的符号
    GOTO     DIVOVER    ;为正,除法结束,跳转到结束行
    COMF     ACCCLO    ;为负,商和余数分别取补
    INCF     ACCCLO
    BTFSC    STATUS,Z
    DECF     ACCCHI
    COMF     ACCCHI
    CALL    NEG_B    ;见乘法程序中间NEG_B
DIVOVER    RETURN        ;子程序返回
;************除法运算确定结果符号子程序*******************
S_SIGN    MOVF     ACCAHI,0    ;ACCAHI异或ACCBHI,结果送SIGN单元
    XORWF     ACCBHI,0
    MOVWF     SIGN            
    BTFSS     ACCBHI,7    ;ACCB为负?
    GOTO     CHEK_A    ;否,检查ACCA
    COMF     ACCBLO    ;是,ACCB取补
    INCF     ACCBLO
1.部分资源来自网络,经ET电子归类整理,旨在服务电子爱好者并无商业目的,不保证正确性与完整性.
2.如果您觉得本站资源对您有用,请告知您的好友,用搜索引擎搜"ET电子"即可.


最新评论共有 0 位网友发表了评论
发表评论
评论内容:不能超过250字,需审核,请自觉遵守互联网相关政策法规。
用户名: 密码:
匿名?
注册
教程下载