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

📄 svgamacr.inc

📁 Dsc8610.zip:-------------OV8610+OV681+OV651数码相机源程序(2500.A.D公司的X51.EXE)
💻 INC
字号:
;%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
;define MACROs for R/W to the W9968's CRs
;
wrCR    MACRO   CR,H,L
        MOV     SubAddress,#CR
        MOV     dataH,H
        MOV     dataL,L
        CALL    wrCR
        ENDM

;;
rdCR    MACRO   CR,H,L
        MOV     SubAddress,#CR
        CALL    rdCR
        MOV     H,dataH
        MOV     L,dataL
        ENDM
;
;%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
writeSDRAM_L MACRO src
        MOV     R1,#CR0E_DramDataPortRegL     ;BA+1CH
        MOV     A,src
        MOVX    @R1,A                         ;write low byte SDRAM data
        ENDM
;
writeSDRAM_H MACRO src
        MOV     R1,#CR0E_DramDataPortRegH     ;BA+1DH
        MOV     A,src
        MOVX    @R1,A                         ;write high byte SDRAM data
        ENDM
;
;;
readSDRAM_L MACRO dst
        MOV     R1,#CR0E_DramDataPortRegL     ;BA+1CH
        MOVX    A,@R1                         ;read low byte SDRAM data11
        MOV     dst,A
        ENDM
;
readSDRAM_H MACRO dst
        MOV     R1,#CR0E_DramDataPortRegH     ;BA+1DH
        MOVX    A,@R1                         ;read high byte SDRAM data
        MOV     dst,A
        ENDM
;
;%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
; if d2d1>=b2b1, C=0, otherwise, C=1

Large   MACRO   d1,d2,b1,b2
        PUSH    01h
        CLR     C
        MOV     A,d1
        MOV     R1,b1
        SUBB    A,R1
        JC      $mknc1
$mknc0:
        JNZ     $mknc1
        MOV     A,d2
        MOV     R1,b2
        SUBB    A,R1
$mknc1:
        POP     01h
        ENDM

;==============================================================================
; d2 d1 d0 = d2 d1 * d0

MUL_2B  MACRO   d2,d1,d0
        PUSH    ACC
        PUSh    B
        PUSH    01h
        MOV     A,d2
        MOV     B,d0
        MUL     AB
        MOV     d2,B
        MOV     B,d1
        MOV     d1,A
        MOV     A,d0
        MUL     AB
        MOV     d0,#0
        MOV     R1,A
        Adder_3B d2,d1,d0,#0,B,R1
        POP     01h
        POP     B
        POP     ACC
        ENDM

;==============================================================================
; d3 d2 d1 d0= d3 d2 d1 * d0

MUL_3B  MACRO   d3,d2,d1,d0
        PUSH    ACC
        PUSh    B
        PUSH    02h
        MOV     R2,d0
        MUL_2B  d3,d2,R2
        MOV     A,d1
        MOV     B,d0
        MUL     AB
        MOV     d0,#0
        MOV     d1,R2
        MOV     R2,A
        Adder_4B        d3,d2,d1,d0,#00,#00,B,R2
        POP     02h
        POP     B
        POP     ACC
        ENDM

;==============================================================================
; dd1 dd0/dD =dd1 dd0 + dR

DIV_2B  MACRO   dd1,dd0,dD,dR
        MOV     d1,dd1
        MOV     d0,dd0
        MOV     D,dD
        CALL    DIV_2B
        MOV     dd1,d1
        MOV     dd0,d0
        MOV     dR,R
        ENDM
;==============================================================================
;data2 data1 data0 < dd1 dd0 dR, then C=1

Larger_3B       MACRO   dd1,dd0,dR
        MOV     d1,dd1
        MOV     d0,dd0
        MOV     R,dR
        CALL    Compare_value
        ENDM
;==============================================================================
; a1 a0 =a1 a0 + b1 b0

Adder_2B MACRO  a1,a0,b1,b0
        PUSH    A
                
        MOV     A,a0
        ADD     A,b0
        MOV     a0,A
        JNC     $mknc0
        INC     a1        ;carry to a1
 $mknc0:
        MOV     A,a1
        ADD     A,b1
        MOV     a1,A

        POP     A
        ENDM
;==============================================================================
;a2 a1 a0 = a2 a1 a0 + b2 b1 b0

Adder_3B MACRO  a2,a1,a0,b2,b1,b0
        PUSH    A

        MOV     A,a0
        ADD     A,b0
        MOV     a0,A
        JNC     $mknc0
        INC     a1        ;carry to a1,a2
        MOV     A,a1       
        JNZ     $mknc0     
        INC     a2        
 $mknc0:
        MOV     A,a1
        ADD     A,b1
        MOV     a1,A
        JNC     $mknc1
        INC     a2        ;carry to a2
 $mknc1:
        MOV     A,a2
        ADD     A,b2
        MOV     a2,A

        POP     A
        ENDM

;==============================================================================
;a3 a2 a1 a0 = a3 a2 a1 a0 + b3 b2 b1 b0

Adder_4B MACRO  a3,a2,a1,a0,b3,b2,b1,b0
        PUSH    A

        MOV     A,a0
        ADD     A,b0
        MOV     a0,A
        JNC     $mkn0
        INC     a1        ;carry to a1,a2,a3
        MOV     A,a1       
        JNZ     $mkn0     
        INC     a2        
        MOV     A,a2       
        JNZ     $mkn0     
        INC     a3        
 $mkn0:
        MOV     A,a1
        ADD     A,b1
        MOV     a1,A
        JNC     $mkn1
        INC     a2        ;carry to a2,a3
        MOV     A,a2       
        JNZ     $mkn1     
        INC     a3        
 $mkn1:
        MOV     A,a2
        ADD     A,b2
        MOV     a2,A
        JNC     $mkn2
        INC     a3        ;carry to a3
 $mkn2:
        MOV     A,a3
        ADD     A,b3
        MOV     a3,A

        POP     A
        ENDM
;
;==============================================================================
;a1 a0 = a1 a0 - b1 b0

Dec_2B  MACRO   a1, a0, b1, b0

        CLR     C
        MOV     A,a0
        SUBB    A,b0
        MOV     a0,A

        MOV     A,a1
        SUBB    A,b1
        MOV     a1,A

        ENDM

;==============================================================================
;a2 a1 a0 = a2 a1 a0 - b2 b1 b0

Dec_3B  MACRO   a2, a1, a0, b2, b1, b0
        PUSH    A

        Dec_2B  a1,a0,b1,b0

        MOV     A,a2
        SUBB    A,b2
        MOV     a2,A

        POP     A
        ENDM

;==============================================================================
;;
Adder_3B_dec MACRO  a2,a1,a0,b2,b1,b0
        PUSH    A
        PUSH    B

        MOV     A,a0
        ADD     A,b0
        MOV     B,#10
        DIV     AB
        MOV     a0,B       
        JZ      $mk1
        INC     a1
        MOV     A,a1
        MOV     B,#10
        DIV     AB
        MOV     a1,B
        JZ      $mk1
        INC     a2
 $mk1:          
        MOV     A,a1
        ADD     A,b1
        MOV     B,#10
        DIV     AB
        MOV     a1,B       
        JZ      $mk2
        INC     a2
 $mk2:
        MOV     A,a2
        ADD     A,b2
        MOV     B,#10
        DIV     AB
        MOV     a2,B       

        POP     B
        POP     A
        ENDM
;
;%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
;%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%

⌨️ 快捷键说明

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