⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 add_bcd.asm

📁 PIC单片机开发的功能函数:加减乘除转换
💻 ASM
字号:
;******************* 无符号 BCD 加法  ***************
;
;       This routine performs a 2 Digit Unsigned BCD Addition
; It is assumed that the two BCD numbers to be added are in
; locations Num_1 & Num_2. The result is the sum of Num_1+Num_2
; and is stored in location Num_2 and the overflow carry is returned
; in location Num_1
;
;   Performance :
;               Program Memory  :       25
;               Clock Cycles    :       17   ( worst case )
;
;*******************************************************************;
;
Num_1   equ     8       ; 加数寄存器,加法和的高位寄存器。
result  equ     8
;
Num_2   equ     9       ; 加数寄存器,加法和的低位寄存器。
O_flow  equ     9
; 其它的寄存器自己定义    
;
BCDAdd 
 movf    Num_1,W
	 clrf    Num_1           ;clear num_1
	 addwf   Num_2,1         ; do binary addition
	 btfsc   STATUS,C        ;< 256 then skip
	 goto    inc_n1n2        ;else inc all
	 movlw   66              ;add 66
	 addwf   Num_2,1         ;/
	 btfss   STATUS,DC       ;half carry?
	 goto    sub_06          ;no then subtract
	 btfss   STATUS,C        ;full carry?
	 goto    sub_60          ;yes then subtract
inc_n1  
incf    Num_1,1         ;inc it
	  retlw   0               ;clr w
sub_06
  btfss   STATUS,C        ;full carry
	  goto    sub_66          ;yes subtract 66
	  movlw   6               ;else subtract 6
	  goto    sub_com         ;do common
sub_66
      movlw   66              
sub_com
 subwf   Num_2,1                   
	  retlw   0
sub_60
      movlw   60
	  goto    sub_com
inc_n1n2
	  movlw   66
	  addwf   Num_2,1
	  goto    inc_n1
;
;********************************************************************
;               测试程序(注意它怎样使用该子程序)
;*********************************************************************
main   
 movlw   99
	 movwf   Num_1      ; Set Num_1 = 99 ( max BCD digit )
	 movlw   99
	 movwf   Num_2      ; Set Num_2 = 99
;
	 call    BCDAdd     ; After addition, Num_2 = 98
;                          ;  and Num_1 = 01 ( 99+99 = 198 -> max number )
;
self    goto    self     ;如不是测试程序,这句无用
;
;
	org     1FF
	goto    main
;
	END






⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -