RSS

PIC单片机应算子程序

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


    COMF         ACCCHI
    BTFSC         STATUS,Z
NEG_B    DECF         ACCBLO        ;
    COMF         ACCBLO
    BTFSC         STATUS,Z
    DECF         ACCBHI
    COMF         ACCBHI
OVER    RETURN        ;子程序返回
;****************************************
SETUP    MOVLW     .15    ;初始化TEMP寄存器        
    MOVWF     TEMP
    MOVF     ACCBHI,0    ;ACCB送ACCD
    MOVWF    ACCDHI
    MOVF     ACCBLO,0
    MOVWF     ACCDLO
    CLRF     ACCBHI    ;清ACCB
    CLRF     ACCBLO
    RETURN        ;子程序返回
;*******乘法运算确定结果符号判断子程序******
S_SIGN    MOVF     ACCAHI,0    ;ACCAHI异或ACCBHI,结果送SIGN单元
    XORWF     ACCBHI,0
    MOVWF     SIGN            
    BTFSS     ACCBHI,7    ;ACCB为负吗?
    GOTO     CHEK_A    ;否,检查ACCA
    CALL    NEG_B    ;是,求取ACCB绝对值
CHEK_A    BTFSC     ACCAHI,7    ;ACCA为负吗?
    CALL     NEG_A    ;ACCA为负,求取ACCA绝对值,
            ;见双字节加法程序
    RETURN        ;ACCA和ACCB均为正,返回
【校验举例1】:-24555×(-7391)=181486005(十进制)
化为十六进制数:A015H×E321H
结果:0AD141B5H(十六进制)
【校验举例2】 16405×13089=214725045(十进制)
化为十六进制数:4015H×3321H
结果:0CCC71B5H(十六进制)
【例程】
MAIN    MOVLW    0X15    ;被乘数4015H送ACCB
    MOVWF    ACCBLO
    MOVLW    0X40
    MOVWF    ACCBHI
    MOVLW    0X21    ;乘数3321H送ACCA
    MOVWF    ACCALO
    MOVLW    0X33
    MOVWF    ACCAHI
    CALL    D_mpy    ;调用双字节乘法子程序,求积
    END
 2.3  16×16位定点数除法子程序
子程序采用反复的减法算法,除数和被除数分别为16位二进制有符号数(均采用补码表示,第16位为符号位),商为16位二进制有符号数,第16位为符号位。子程序的入口条件和出口条件如下:
入口条件:被除数存放在ACCBHI、ACCBLO单元中;
      除数存放在ACCAHI、ACCALO单元中。
出口条件:商存放在ACCBHI、ACCBLO单元中;
          余数存放在ACCCHI、ACCCLO单元中。
    
    LIST    p=16f877
    INCLUDE    p16f877.inc
    ACCALO    EQU     20    ;存放除数低8位
    ACCAHI     EQU     21    ;存放除数高8位
    ACCBLO     EQU     22    ;存放被除数和商的低8位
    ACCBHI     EQU     23    ;存放被除数和商的高8位
    ACCCLO     EQU     24    ;存放余数低8位
1.部分资源来自网络,经ET电子归类整理,旨在服务电子爱好者并无商业目的,不保证正确性与完整性.
2.如果您觉得本站资源对您有用,请告知您的好友,用搜索引擎搜"ET电子"即可.


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