📄 fs_fxp_arith.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 + -