📄 macro_sonix_kuo.h
字号:
;;File:MACRO_SONIX.H
;;Data:2007/09/15
;;Modify:2007/11/23
;;Designator:GUO YONG LIANG
;;------------------------------------------------------------------
;; ADD2R/ADD2C/ADD1C/ADD1R
;; BTOBE/BTOBNE
;; CLRC/CLRWDT/CJR/CJC/CJE/CJEC/CJNE/CJNEC/CJA/CJAC/CJB/CJBC/CJAE/CJAEC/CJBE/CJBEC/CJEA/CJEAC
;; CJE2/CJEC2/CJNE2/CJNEC2/CJA2/CJB2/CJR2/CJC2/CJAE2/CJAEC2/CJBE2/CJBEC2/CJAC2/CJBC2
;; DINT/D1T/D2T/DEC2R
;; EINT
;; JZ/JNZ/JMP_RET/JNZ2/JZ2/JB0/JB1
;; MOV1C/MOV1R/MOV2C/MOV2R/MOV3R/MOV3C
;; NOT/NEG/NEXT
;; ROR/ROL
;; SETC/SUB2R/SUB2C/SHLC/SHRC/SHL2C/SHR2C/SHL2/SHR2/SUB1R/SUB1C
;; INC2R
;; @JMP_A
;; UPTO
;; XORC/ORC/ANDC
;;------------------------------------------------------------------
IFNDEF _SONIXMACRO_
_SONIXMACRO_ EQU 1
;;------------------------------------------------------------------
JE MACRO Address ;; Jump if Zer0
b0bts0 fz
Jmp_Ret Address ;; Zer0 = 1
ENDM
JZer0 MACRO Address ;; Jump if Zer0
b0bts0 fz
Jmp_Ret Address ;; Zer0 = 1
ENDM
JNE MACRO Address ;; Jump if Zer0 = 0
b0bts1 fz
Jmp_Ret Address ;; Zer0 = 0
ENDM
;进入睡眠
sleep_ macro
B0BSET FCPUM0
endm
;位取反
NOT_BIT macro bit
b0bts0 bit
JMP $+3
b0bset bit
JMP $+2
b0bclr bit
endm
;; Clear Carry Flag
;; Run Time Clock:1
;; Program Length:1
CLRC MACRO
B0BCLR FC
ENDM
;; Set Carry Flag
;; Run Time Clock:1
;; Program Length:1
SETC MACRO
B0BSET FC
ENDM
;; Reset Watch-Dog Count
;; Run Time Clock:1
;; Program Length:1
CLRWDT MACRO
MOV a,#5ah
B0MOV WDTR,A
ENDM
;; Enable Interrupt
;; Run Time Clock:1
;; Program Length:1
EINT MACRO
B0BSET FGIE
ENDM
;; Disable Interrupt
;; Run Time Clock:1
;; Program Length:1
DINT MACRO
B0BCLR FGIE
ENDM
;; Memory = ~Memory
;; Run Time Clock:1
;; Program Length:1
NOT MACRO Memory
IFIDNI <Memory>, <A>
XOR A,#0XFF
ELSE
MOV A,#0XFF
XOR Memory,A
ENDIF
ENDM
;; Memory = -Memory
;; Run Time Clock:4
;; Program Length:4
NEG MACRO Memory
IFIDNI <Memory>, <A>
XOR A,#0XFF
ADD A,#1
ELSE
MOV A,#0
SUB Memory,A
ENDIF
ENDM
;; Memory XOR Constant
;; Run Time Clock:2
;; Program Length:2
XORC MACRO Memory,Constant
IFIDNI <Memory>, <A>
XOR Memory,A
ELSE
MOV A,#Constant
XOR Memory,A
ENDIF
ENDM
;; Memory OR Constant
;; Run Time Clock:2
;; Program Length:2
ORC MACRO Memory,Constant
IFIDNI <Memory>, <A>
OR Memory,A
ELSE
MOV A,#Constant
OR Memory,A
ENDIF
ENDM
;; Memory AND Constant
;; Run Time Clock:2
;; Program Length:2
ANDC MACRO Memory,Constant
IFIDNI <Memory>, <A>
AND Memory,A
ELSE
MOV A,#Constant
AND Memory,A
ENDIF
ENDM
;;------------------------------------------------------------------
;; 2 Byte Plus AX = AX + 1
;; Run Time Clock:Max6 Min 4
;; Program Length:4
INC2R MACRO AHByte,ALByte
INCMS ALByte
JMP $+2
INCMS AHByte
NOP
ENDM
;; 1 Byte Plus AX = AX + BX(1Byte)
;; Run Time Clock:4
;; Program Length:4
ADD1R MACRO AHByte,ALByte,BLByte
MOV A,BLByte
ADD ALByte,A
MOV A,#0
ADC AHByte,A
ENDM
;; 2 Byte Plus AX = AX + BX
;; Run Time Clock:4
;; Program Length:4
ADD2R MACRO AHByte,ALByte,BHByte,BLByte
MOV A,BLByte
ADD ALByte,A
MOV A,BHByte
ADC AHByte,A
ENDM
;; 2 Byte Plus AX = AX + BX
;; Run Time Clock:6
;; Program Length:6
ADD3B2R MACRO AHByte,AMByte,ALByte,BHByte,BLByte
MOV A,BLByte
ADD ALByte,A
MOV A,BHByte
ADC AMByte,A
MOV A,#0
ADC AHByte,A
ENDM
;; 2 Byte Plus AX = AX + CX ( Constant )(1 Byte)
;; Run Time Clock:4
;; Program Length:4
ADD1C MACRO AHByte,ALByte,CLByte
MOV A,#CLByte
ADD ALByte,A
MOV A,#0
ADC AHByte,A
ENDM
;; 2 Byte Plus AX = AX + CX ( Constant )
;; Run Time Clock:4
;; Program Length:4
ADD2C MACRO AHByte,ALByte,CHByte,CLByte
MOV A,#CLByte
ADD ALByte,A
MOV A,#CHByte
ADC AHByte,A
ENDM
;; 2 Byte Plus AX = AX + CX ( Constant )
;; Run Time Clock:6
;; Program Length:6
ADD3B2C MACRO AHByte,AMByte,ALByte,CHByte,CLByte
MOV A,#CLByte
ADD ALByte,A
MOV A,#CHByte
ADC AMByte,A
MOV A,#0
ADC AHByte,A
ENDM
;; 2Byte AX = AX - BX(1Byte)
;; run time clock:6
;; ProgramLength: 6
SUB1R MACRO AH,AL,BL ;; AX = AX - BX
MOV A,AL
SUB A,BL
MOV AL,A
B0BTS1 FC
DECMS AH
NOP
ENDM
;; 2Byte AX = AX - BX
;; run time clock:6
;; ProgramLength: 6
SUB2R MACRO AH,AL,BH,BL ;; AX = AX - BX
MOV A,AL
SUB A,BL
MOV AL,A
MOV A,AH
SBC A,BH
MOV AH,A
ENDM
;; 3Byte AX = AX - BX
;; run time clock:9
;; ProgramLength: 9
SUB3B2R MACRO AH,AM,AL,BH,BL ;; AX = AX - BX
MOV A,AL
SUB A,BL
MOV AL,A
MOV A,AM
SBC A,BH
MOV AM,A
B0BTS1 FC
DECMS AH
NOP
ENDM
;; 2Byte AX = AX - 1
;; run time clock:5
;; ProgramLength: 5
DEC2R MACRO AH,AL ;; AX = AX - 1
MOV A,#256-1
ADD AL,A
B0BTS1 FC
DECMS AH
NOP
ENDM
;; 2Byte AX = AX - BX, BX is Constant
;; run time clock:6
;; ProgramLength: 6
SUB1C MACRO AH,AL,BL ;; AX = AX - BX
MOV A,AL
SUB A,#BL
MOV AL,A
B0BTS1 FC
DECMS AH
NOP
ENDM
;; 2Byte AX = AX - BX, BX is Constant
;; run time clock:7
;; ProgramLength: 7
SUB2C MACRO AH,AL,BH,BL ;; AX = AX - BX
MOV A,#(256-BL)
ADD AL,A
MOV A,AH
B0BTS1 FC
SUB A,#1
SUB A,#BH
MOV AH,A
ENDM
;; 3Byte AX = AX - BX, BX is Constant
;; run time clock:13
;; ProgramLength: 13
SUB3R2C MACRO AH,AM,AL,BH,BL ;; AX = AX - BX
MOV A,#(256-BL)
ADD AL,A
B0BTS0 FC
JMP $+5
DECMS AM
JMP $+3
DECMS AH
NOP
MOV A,#(256-BH)
ADD AM,A
B0BTS1 FC
DECMS AH
NOP
ENDM
;; Bit Copy EQU
;; Run Time Clock:4
;; Program Length:4
BTOBE MACRO Bit0,Bit1
BTS1 Bit1
BCLR Bit0
BTS0 Bit1
BSET Bit0
ENDM
;; Bit Copy !=
;; Run Time Clock:4
;; Program Length:4
BTOBNE MACRO Bit0,Bit1
BTS1 Bit1
BSET Bit0
BTS0 Bit1
BCLR Bit0
ENDM
;; Reg unto Constant
;; Run Time Clock:7
;; Program Length:6
UPTO MACRO Reg0,Constant,Address
INCMS Reg0
MOV A,Reg0
SUB A,#Constant
B0BTS1 FC
IFB <Address>
RET
ELSE
JMP_RET Address
ENDIF
CLR Reg0
ENDM
;; 跳转指令,宏内部用,目的是让转移地址可以的RET指令
;; Run Time Clock: 2
;; Program Length: 1
JMP_RET MACRO Address
IFIDNI <Address>, <Ret>
RET
ELSE
JMP Address
ENDIF
ENDM
;; 位判断,为0跳走,
;; 1 Bit Compare (<, >, =)
;; Run Time Clock: 2-3
;; Program Length: 2
JB0 MACRO Bit0,Address
BTS1 Bit0
JMP_RET Address
ENDM
;; 位判断,为1跳走,
;; 1 Bit Compare (<, >, =)
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -