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

📄 maths.asm

📁 VCP201_CODE is a FPGA source code.
💻 ASM
字号:
;======================================================
; File : Maths.asm
;
; Name : udiv 
; Parm : hi_byte, lo_byte:unsigned char divisor:8bits 
; Retn : hi_byte, lo_byte:16bits unsigned quotient
;	 rem:8bits remainder
; Desc : 16/8 unsigned division
; Vars : local_tmp1, local_tmp2
;========================================================
udiv:
	bsf	STATUS,RP0	;Page 1 RAM
	clrf  	rem
	movlw 	8            
	movwf 	local_tmp1
	
udiv_loop1:
	rlf   	hi_byte,W
	rlf   	rem
	movf    divisor,W
	subwf 	rem
	btfsc 	STATUS,C
	goto  	udiv_2
	addwf 	rem,F
	bcf   	STATUS,C

udiv_2:
	rlf   	hi_byte,F
	decfsz	local_tmp1,F
	goto  	udiv_loop1

	movlw 	8
	movwf 	local_tmp1
	clrf  	local_tmp2

udiv_loop2:
	rlf   	lo_byte,W
	rlf   	rem,F     
	rlf   	local_tmp2,F
	movf  	divisor,W
	subwf 	rem,F
	clrw
	btfss 	STATUS,C
	movlw 	1
	subwf 	local_tmp2,F
	btfsc 	STATUS,C
	goto  	udiv_3
	movf  	divisor,W
	addwf 	rem,F
	clrw
	btfsc 	STATUS,C
	movlw 	1
	addwf 	local_tmp2,F
	bcf   	STATUS,C

udiv_3:
	rlf  	lo_byte,F
	decfsz	local_tmp1,F
	goto  	udiv_loop2
	
	bcf	STATUS,RP0	;Page 0 Ram
	
	return


;------------------------------------------------------------
; Name : umul
; Parm : hi_byte, lo_byte:unsigned char
; Retn : hi_byte, lo_byte:16bits unsigned product
; Desc : 8x8 unsigned multiply
; Vars : mul_cnt
;------------------------------------------------------------
umul:
	bsf	STATUS,RP0	;Page 1 RAM
	movlw 	0x08
	movwf 	mul_cnt		;mul_cnt=8
	movf  	hi_byte,W	;W=hi_byte
	clrf  	hi_byte		;clear hi_byte
        bcf	STATUS,C

umul_loop:               	
	rrf  	hi_byte,F	;right shift
	rrf  	lo_byte,F	;right shift
	btfsc 	STATUS,C
	addwf 	hi_byte,F
	decfsz	mul_cnt,F
	goto  	umul_loop
	rrf   	hi_byte,F
	rrf   	lo_byte,F
	
	bcf	STATUS,RP0	;Page 0 RAM
	
	return

⌨️ 快捷键说明

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