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

📄 fs_fxp_arith.asm

📁 富晶的MCU仿真器软件
💻 ASM
字号:
;===================================================
;	16+16 Bit  Fixed Point Addition.
;---------------------------------------------------
;Equation:		<<16+16 = 16>>
;			AX+BX = AX
;Input: 
;	Paramaters: AX(AH,AL) & BX(BH,BL)
;	Format 	  : 2's(Hex) or 2's complement(Hex)
;	Range	  : 0 ~ 0XFFFF
;Output:
;	Paramaters: AX(AH,AL)
;	Format	  : 2's(Hex)or 2's complement(Hex)
;	Range	  : 0 ~ 0XFFFF
;Error flag:
;	Pass	  :0x0
;	Overflow  :0x1
;Performance:
;	Cycle	  = 11
; 	PM=10*2(bytes)		DM= 5(bytes)(Without W register)
;				    1.AX,2.BX,3.ErrorFlag
;-----------------------------------------------
;Edit:Gavannis		Time:2005/2/18		Version:0.1
;=====================================================================================	

16ADD16:
	CLRF	STATUS
	MOVFW	BL
	ADDWF	AL,F
	MOVFW	BH
	ADDWFC  AH,F
	CLRF	Work
	BTFSC	STATUS,C
	MOVLW	01H	
	MOVWF	ErrorFlag
RETURN

;===================================================
;	32+32 Bit  Fixed Point Addition.
;---------------------------------------------------
;Equation:		<<32+32 = 32>>
;		     EAX|AX+EBX|BX = EAX|AX
;Error flag:
;	Pass	  :0x0
;	Overflow  :0x1
;Performance:
;	Cycle	  = 15
; 	PM=14*2(bytes)		DM= 9(bytes)(Without W register)
;				    1.EAX,2.AX,3.EBX2,4.BX,3.ErrorFlag
;-----------------------------------------------
;Edit:Gavannis		Time:2005/2/18		Version:0.1
;=====================================================================================	
32ADD32:
	CLRF	STATUS
	MOVFW	BL
	ADDWF	AL,F
	MOVFW	BH
	ADDWFC  AH,F
	MOVFW	EBL
	ADDWFC  EAL,F
	MOVFW	EBH
	ADDWFC  EAH,F
	CLRF	Work
	BTFSC	STATUS,C
	MOVLW	01H	
	MOVWF	ErrorFlag
RETURN
;===================================================
;	16-16 Bit  Fixed Point Subtraction.
;---------------------------------------------------
;Equation:		<<16-16= 16>>
;			 AX-BX = AX
;Error flag:
;	Pass	  :0x0
;	borrow    :0x2
;Performance:
;	Cycle	  = 11
; 	PM=10*2(bytes)		DM= 5(bytes)(Without W register)
;				    1.AX,2.BX,3.ErrorFlag
;-----------------------------------------------
;Edit:Gavannis		Time:2005/2/18		Version:0.1
;=====================================================================================	
16SUB16:
	CLRF	STATUS
	MOVFW	BL
	SUBWF	AL,F
	MOVFW	BH
	SUBWFC  AH,F
	CLRF	Work	
	BTFSS	STATUS,C
	MOVLW	02H	
	MOVWF	ErrorFlag
RETURN

;===================================================
;	32-32 Bit  Fixed Point Subtraction.
;---------------------------------------------------
;Equation:		<<32-32= 32>>
;		    EAX|AX-EBX|BX = EAX|AX
;Error flag:
;	Pass	  :0x0
;	borrow    :0x2
;Performance:
;	Cycle	  = 15
; 	PM=14*2(bytes)		DM= 9(bytes)(Without W register)
;				    1.EAX,2.AX,3.EBX,4.BX,5.ErrorFlag
;-----------------------------------------------
;Edit:Gavannis		Time:2005/2/18		Version:0.1
;=====================================================================================	
32SUB32:
	CLRF	STATUS
	MOVFW	BL
	SUBWF	AL,F
	MOVFW	BH
	SUBWFC  AH,F
	MOVFW	EBL
	SUBWFC  EAL,F	
	MOVFW	EBH
	SUBWFC  EAH,F
	CLRF	Work	
	BTFSS	STATUS,C
	MOVLW	02H	
	MOVWF	ErrorFlag
RETURN
;===================================================
;	This function is MUL Function with unsigned flag. 
;		<<8*8= 16>>
;		AL*BL = AX
;Input: 
;	Paramaters: AL & BL
;	Format 	  : 2's(Hex)
;	Range	  : 0 ~ 0XFF(0 ~ 255)
;Output:
;	Paramaters:AX(AH,AL)
;	Format	  :2's(Hex)
;	Range	  : 0 ~ 0XFE01(0 ~ 65,025)
;Performance:
;	Cycle	  = 126+6*bits ON/OFF(8)
;	MAX cycle = 174
;	Min cycle = 126
; 	PM=(11+3+6)*2=40 bytes		DM= 5(bytes)(Without W register)
;				    		1.AX,2.BL(1),3.MULTL(1),4.buffer(1)
;-----------------------------------------------
;Edit:Gavannis		Time:2005/2/23		Version:0.1
;=====================================================================================	

8MUL8U:
	CLRF	AH
	
	MOVFW	AL	;AL to temp register
	MOVWF	MULTL
	
	MOVLW	08H	;LOOP Count = 8
	MOVWF	buffer						
MUL_LOOP8U:
	BTFSC	BL,0
	CALL	Add	;//=1,

⌨️ 快捷键说明

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