微波EDA网,见证研发工程师的成长!
首页 > 硬件设计 > 嵌入式设计 > PIC单片机的多字节减法子程序

PIC单片机的多字节减法子程序

时间:08-06 来源:互联网 点击:
  ;本程序实现多字节无符号数减法。

  ;入口参数:减数首地址在DADR中,被减数首地址在SADR中,字节数在CNT中。

  ;出口参数:结果首地址在SADR中,字节数在CNT中,借位标志在STATUS:C中,'0'表示有借位。

  ;占用资源:W,FSR,STATUS,020H,021H,022H,023H,028H,029H,一重堆栈。

  ;说明: 1.程序执行后,被减数被冲掉。

  IFNDEF MUSUB1

  #DEFINE MUSUB1

  MUSUB MOVF SADR,W

  MOVWF SADRH ;保护结果首地址

  CLRF TEMP2 ;

  DECF TEMP2,F ;清除借位

  NEXT4 MOVF DADR,W

  MOVWF FSR

  MOVF INDF,W ;取出减数

  MOVWF TEMP1 ;暂存

  MOVF SADR,W

  MOVWF FSR

  MOVF TEMP1,W

  SUBWF INDF,F

  RLF TEMP2,F ;暂存当前借位,并使上一次借位前移

  BSF STATUS,C ;清除借位

  MOVLW 1

  BTFSS TEMP2,1

  SUBWF INDF,F

  BTFSS STATUS,C ;减借位位的过程中是否产生了借位

  BCF TEMP2,0

  INCF DADR,F

  INCF SADR,F

  DECFSZ CNT,F

  GOTO NEXT4

  MOVF SADRH,W

  SUBWF SADR,W

  MOVWF CNT ;恢复字节数

  MOVF SADRH,W

  MOVWF SADR ;结果首地址

  RRF TEMP2,W ;借位位放到C中

  RETLW 0

  ENDIF

Copyright © 2017-2020 微波EDA网 版权所有

网站地图

Top