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

📄 math.asm

📁 VCP201_CODE is a FPGA source code.
💻 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 : temp_buf1, temp_buf2
;------------------------------------------------------------
udiv:
        bsf     STATUS,RP0      ; to page 1
        clrf    rem
        bcf	STATUS,RP0

        movlw   8            
        movwf   temp_buf1
        
udiv_loop1:
        rlf     hi_byte,W
        bsf	STATUS,RP0
        rlf     rem,F
        movf    divisor,W
        subwf   rem,F
        bcf	STATUS,RP0

        btfsc   STATUS,C
        goto    udiv_2

        bsf	STATUS,RP0
        addwf   rem,F
        bcf	STATUS,RP0

        bcf     STATUS,C
udiv_2:
	bcf	STATUS,RP0
        rlf     hi_byte,F
        decfsz  temp_buf1,F
        goto    udiv_loop1

        movlw   8
        movwf   temp_buf1
        clrf    temp_buf2

udiv_loop2:
        rlf     lo_byte,W

        bsf	STATUS,RP0
        rlf     rem,F     
        bcf	STATUS,RP0

        rlf     temp_buf2,F

        bsf	STATUS,RP0
        movf    divisor,W
        subwf   rem,F
        bcf	STATUS,RP0
        clrw

        btfss   STATUS,C
        movlw   1
        subwf   temp_buf2,F
        btfsc   STATUS,C
        goto    udiv_3
        bsf	STATUS,RP0
        movf    divisor,W
        addwf   rem,F
        bcf	STATUS,RP0

        clrw
        btfsc   STATUS,C
        movlw   1
        addwf   temp_buf2,F
        bcf     STATUS,C
udiv_3:
        rlf     lo_byte,F
        decfsz  temp_buf1,F
        goto    udiv_loop2

	bcf	STATUS,RP0        
        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      ; to page 1
        movlw   0x08
        movwf   mul_cnt
        bcf	STATUS,RP0

        movf    hi_byte,W
        clrf    hi_byte
        bcf     STATUS,C

umul_loop:
	bcf	STATUS,RP0
        rrf     hi_byte,F
        rrf     lo_byte,F
        btfsc   STATUS,C
        addwf   hi_byte,F

       	bsf	STATUS,RP0
        decfsz  mul_cnt,F
        goto    umul_loop
        bcf	STATUS,RP0

        rrf     hi_byte,F
        rrf     lo_byte,F
       
        return


⌨️ 快捷键说明

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