专注电子技术学习与研究
当前位置:单片机教程网 >> MCU设计实例 >> 浏览文章

PIC单片机65535*65535子程序

作者:佚名   来源:本站原创   点击数:  更新时间:2012年09月26日   【字体:
  INCLUDE"P16F877.INC"
  ORG  0000H
   GOTO A1
   ORG  002BH
A1   MOVLW 00H
  MOVWF 40H;数据处理寄存器高位(乘积高8位)
  MOVLW 00H
  MOVWF 41H;数据处理寄存器低位(乘积高中8位)
  MOVLW 0FFH
  MOVWF 42H;被乘数高位(乘积低中8位)
  MOVLW 0FFH 
  MOVWF 43H;被乘数低位(乘积低8位)
  MOVLW 0FFH
  MOVWF 44H;乘数高位
  MOVLW 0FFH
  MOVWF 45H;乘数低位
  MOVLW D'16'
  MOVWF 4AH;循环次数--8位二进制数相乘8次4位则4次
A2  CLRF 4BH;清标志
  BTFSS 43H,0;判断被乘数第0位是否为0是则不用相加 
  GOTO A3
   MOVFW 45H;不为0则相加
   ADDWF 41H,1;乘数低位与处理后数据低位相加数据存回数据处理低位寄存器
  MOVFW 44H;
  BTFSC STATUS,C;判断是否溢出
  INCF 44H,0;是则加1
  BTFSC STATUS,Z;判断加1后是否溢出
  BSF  4BH,1;是则置为标志
   ADDWF 40H,1;乘数低位与处理后数据高位相加上面相加可能溢出所以用ADDC数据存回数据处理高位寄存器
  BTFSC 4BH,1;判断溢出标志
  BSF  STATUS,C;溢出则置位C
A3   
  RRF  40H,1;先右移高位相加可能溢出RRF循环带C右移
  RRF  41H,1;再右移低位把高位的数移入低位
   RRF  42H,1;将处理后的数移到被乘数高位
   RRF  43H,1;将处理后的数移到被乘数低位
   DECFSZ 4AH,1;是否完成
  GOTO A2
  NOP
   NOP
   NOP
   GOTO  $
   END
关闭窗口

相关文章