📄 macro_sonix_kuo.h
字号:
;; Run Time Clock: 2-3
;; Program Length: 2
JB1 MACRO Bit0,Address
BTS0 Bit0
JMP_RET Address
ENDM
;; 两个寄存器比较,不为0跳走,
;; 1 Byte Compare (<, >, =)
;; Run Time Clock: Max 8, Min 6, Avg 7
;; Program Length: 6
CJR MACRO Reg1,Reg2,Addr_Less,Addr_Big
MOV A,Reg1
SUB A,Reg2
B0BTS1 FC
JMP_RET Addr_Less ;; IF(Reg1<Reg2) JMP l
B0BTS1 FZ
JMP_RET Addr_Big ;; IF(Reg1>Reg2) JMP b
;; IF(Reg1=Reg2) next
ENDM
;; 寄存器与常数比较,不为0跳走,
;; 1 Byte Compare (<, >, =) by Constant
;; Run Time Clock: Max 8, Min 6, Avg 7
;; Program Length: 6
CJC MACRO Reg1,Constant,Addr_Less,Addr_Big
MOV A,Reg1
SUB A,#Constant
B0BTS1 FC
JMP_RET Addr_Less ;; IF(Reg1<#Constant) JMP l
B0BTS1 FZ
JMP_RET Addr_Big ;; IF(Reg1>#Constant) JMP b
;; IF(Reg1=#Constant) next
ENDM
;; 两个寄存器比较,为0跳走,
;; 1 Byte Compare (==, !=),
;; Run Time Clock:== 6, != 5
;; Program Length: 4
CJE MACRO Reg1,Reg2,Addr_Equ
MOV A,Reg2
XOR A,Reg1
B0BTS0 FZ
JMP_RET Addr_Equ ;; IF(Reg1==Reg2) JMP E
;; IF(Reg1!=Reg2)
ENDM
;; A与寄存器比较,为0跳走,
;; 1 Byte Compare (==, !=),
;; Run Time Clock:== 4, != 3
;; Program Length: 3
CJEA MACRO Reg1,Addr_Equ
CMPRS A,Reg1
JMP $+2
JMP_RET Addr_Equ ;; IF(Reg1==#Constant) JMP E
;; IF(Reg1!=#Constant)
ENDM
;; A与常数比较,为0跳走,
;; 1 Byte Compare (==, !=),
;; Run Time Clock:== 4, != 3
;; Program Length: 3
CJEAC MACRO Constant,Addr_Equ
CMPRS A,#Constant
JMP $+2
JMP_RET Addr_Equ ;; IF(Reg1==#Constant) JMP E
;; IF(Reg1!=#Constant)
ENDM
;; 寄存器与常数比较,== 跳走,
;; 1 Byte Compare (==, !=),
;; Run Time Clock:== 6, != 5
;; Program Length: 4
CJEC MACRO Reg1,Constant,Addr_Equ
MOV A,#Constant
XOR A,Reg1
B0BTS0 FZ
JMP_RET Addr_Equ ;; IF(Reg1==#Constant) JMP E
;; IF(Reg1!=#Constant)
ENDM
;; 两个寄存器比较,!=跳走,
;; 1 Byte Compare (!=, ==),
;; Run Time Clock:== 5, != 6
;; Program Length: 4
CJNE MACRO Reg1,Reg2,Addr_NoEqu
MOV A,Reg2
CMPRS A,Reg1
JMP_RET Addr_NoEqu ;; IF(Reg1!=Reg2) JMP NE
;; IF(Reg1==Reg2)
ENDM
;; 寄存器与常数比较,不为0跳走,
;; 1 Byte Compare (!=, ==),
;; Run Time Clock:== 5, != 6
;; Program Length: 4
CJNEC MACRO Reg1,Constant,Addr_NoEqu
MOV A,#Constant
XOR A,Reg1
B0BTS1 FZ
JMP_RET Addr_NoEqu ;; IF(Reg1!=#Constant) JMP NE
;; IF(Reg1==#Constant)
ENDM
;; 寄存器检查,为0跳走,
;; 1 Byte Check (=0, !=0)
;; Run Time Clock: =0→4,!=→3
;; Program Length: 3
JZ MACRO Reg1,Addr_Zero
MOV A,Reg1
B0BTS0 FZ
JMP_RET Addr_Zero ;; IF(Reg1=0) JMP Zero
;; IF(Reg1!=0) unjump
ENDM
;; 寄存器检查,不为0跳走,
;; 1 Byte Check (=0, !=0)
;; Run Time Clock: =0→4,!=→3
;; Program Length: 3
JNZ MACRO Reg1,Addr_NZero
MOV A,Reg1
B0BTS1 FZ
JMP_RET Addr_NZero ;; IF(Reg1!=0) JMP NZero
;; IF(Reg1=0) unjump
ENDM
;;------------------------------------------------------------------
;; 两个寄存器比较,第一个大于第二个跳走,
;; 1 Byte Compare ( >, <=)
;; Run Time Clock: > 5, <= 6
;; Program Length: 4
CJA MACRO Reg1,Reg2,Addr_Above
MOV A,Reg2
SUB A,Reg1
B0BTS1 FC
JMP_RET Addr_Above ;; IF(Reg1> Reg2) JMP above
;; IF(Reg1<=Reg2) unjump
ENDM
;; 寄存器与常数比较,第一个大于第二个跳走,
;; 1 Byte Compare ( >, <=) by Constant
;; Run Time Clock: > 5, <= 6
;; Program Length: 4
CJAC MACRO Reg1,Constant,Addr_Above
MOV A,#Constant
SUB A,Reg1
B0BTS1 FC
JMP_RET Addr_Above ;; IF(Reg1> #Constant) JMP above
;; IF(Reg1<=#Constant) unjump
ENDM
;; 两个寄存器比较,第一个大于等于第二个跳走,
;; 1 Byte Compare ( >= ,<)
;; Run Time Clock: < 5, >= 6
;; Program Length: 4
CJAE MACRO Reg1,Reg2,Addr_Above_Equ
MOV A,Reg1
SUB A,Reg2
B0BTS0 FC
JMP_RET Addr_Above_Equ ;; IF(Reg1>=Reg2) JMP above
;; IF(Reg1< Reg2) unjump
ENDM
;; 寄存器与常数比较,第一个大于等于第二个跳走,
;; 1 Byte Compare ( >= ,<)
;; Run Time Clock: < 5, >= 6
;; Program Length: 4
CJAEC MACRO Reg1,Constant,Addr_Above_Equ
MOV A,Reg1
SUB A,#Constant
B0BTS0 FC
JMP_RET Addr_Above_Equ ;; IF(Reg1>=#Constant) JMP above
;; IF(Reg1< #Constant) unjump
ENDM
;; 两个寄存器比较,第一个小于第二个跳走,
;; 1 Byte Compare ( <, >=)
;; Run Time Clock: < 5, >= 6
;; Program Length: 4
CJB MACRO Reg1,Reg2,Addr_Below
MOV A,Reg1
SUB A,Reg2
B0BTS1 FC
JMP_RET Addr_Below ;; IF(Reg1< Reg2) JMP below
;; IF(Reg1>=Reg2) unjump
ENDM
;; 寄存器与常数比较,第一个小于第二个跳走,
;; 1 Byte Compare ( <, >=) by Constant
;; Run Time Clock: < 5, >= 6
;; Program Length: 4
CJBC MACRO Reg1,Constant,Addr_Below
MOV A,Reg1
SUB A,#Constant
B0BTS1 FC
JMP_RET Addr_Below ;; IF(Reg1< #Constant) JMP below
;; IF(Reg1>=#Constant) unjump
ENDM
;; 两个寄存器比较,第一个小于等于第二个跳走,
;; 1 Byte Compare ( <= ,>)
;; Run Time Clock: > 5, <= 6
;; Program Length: 4
CJBE MACRO Reg1,Reg2,Addr_Below_Equ
MOV A,Reg2
SUB A,Reg1
B0BTS0 FC
JMP_RET Addr_Below_Equ ;; IF(Reg1<=Reg2) JMP above
;; IF(Reg1> Reg2) unjump
ENDM
;; 寄存器与常数比较,第一个小于等于第二个跳走,
;; 1 Byte Compare ( <= ,>)
;; Run Time Clock: > 5, <= 6
;; Program Length: 4
CJBEC MACRO Reg1,Constant,Addr_Below_Equ
MOV A,#Constant
SUB A,Reg1
B0BTS0 FC
JMP_RET Addr_Below_Equ ;; IF(Reg1<=#Constant) JMP above
;; IF(Reg1> #Constant) unjump
ENDM
;;------------------------------------------------------------------
;; 两个寄存器(16Bit)比较,不为0跳走,
;; 2 Byte Compare (<, >, =)
;; Run Time Clock:
;; Program Length: 12
CJR2 MACRO Reg1_H,Reg1_L,Reg2_H,Reg2_L,Addr_Below,Addr_Above
CJR Reg1_H,Reg2_H,Addr_Below,Addr_Above
CJR Reg1_L,Reg2_L,Addr_Below,Addr_Above
ENDM
;; 寄存器(16Bit)与常数比较,不为0跳走,
;; 2 Byte Compare (<, >, =) by Constant
;; Run Time Clock:
;; Program Length: 12
CJC2 MACRO Reg1_H,Reg1_L,Constant_H,Constant_L,Addr_Below,Addr_Above
CJC Reg1_H,Constant_H,Addr_Below,Addr_Above
CJC Reg1_L,Constant_L,Addr_Below,Addr_Above
ENDM
;; 两个寄存器(16Bit)比较,第一个大于第二个跳走,
;; 2 Byte Compare ( >, <=)
;; Run Time Clock:
;; Program Length: 10
CJA2 MACRO Reg1_H,Reg1_L,Reg2_H,Reg2_L,Addr_Above
MOV A,Reg2_H
SUB A,Reg1_H
B0BTS1 FC
JMP_RET Addr_Above ;; IF(Reg1> Reg2) JMP above
B0BTS1 FZ
JMP $+5
MOV A,Reg2_L
SUB A,Reg1_L
B0BTS1 FC
JMP_RET Addr_Above ;; IF(Reg1> Reg2) JMP above
;; IF(Reg1<=Reg2) unjump
ENDM
;; 两个寄存器(16Bit)比较,第一个小于第二个跳走,
;; 2 Byte Compare ( <, >=)
;; Run Time Clock:
;; Program Length: 10
CJB2 MACRO Reg1_H,Reg1_L,Reg2_H,Reg2_L,Addr_Below
MOV A,Reg1_H
SUB A,Reg2_H
B0BTS1 FC
JMP_RET Addr_Below ;; IF(Reg1< Reg2) JMP below
B0BTS1 FZ
JMP $+5
MOV A,Reg1_L
SUB A,Reg2_L
B0BTS1 FC
JMP_RET Addr_Below ;; IF(Reg1< Reg2) JMP below
;; IF(Reg1>=Reg2) unjump
ENDM
;; 两个寄存器(16Bit)比较,第一个大于等于第二个跳走,
;; 2 Byte Compare ( >=,< )
;; Run Time Clock:
;; Program Length: 10
CJAE2 MACRO Reg1_H,Reg1_L,Reg2_H,Reg2_L,Addr_Above_Equ
MOV A,Reg2_H
SUB A,Reg1_H
B0BTS0 FZ
JMP $+4
B0BTS1 FC
JMP_RET Addr_Above_Equ ;; IF(Reg1>=Reg2) JMP above_Equ
JMP $+5
MOV A,Reg1_L
SUB A,Reg2_L
B0BTS0 FC
JMP_RET Addr_Above_Equ ;; IF(Reg1>=Reg2) JMP above_Equ
;; IF(Reg1< Reg2) unjump
ENDM
;; 两个寄存器(16Bit)比较,第一个小于等于第二个跳走,
;; 2 Byte Compare ( <=,> )
;; Run Time Clock:
;; Program Length: 10
CJBE2 MACRO Reg1_H,Reg1_L,Reg2_H,Reg2_L,Addr_Below_Equ
MOV A,Reg1_H
SUB A,Reg2_H
B0BTS1 FC
JMP_RET Addr_Below_Equ ;; IF(Reg1<=Reg2) JMP Below_Equ
B0BTS1 FZ
JMP $+5
MOV A,Reg2_L
SUB A,Reg1_L
B0BTS0 FC
JMP_RET Addr_Below_Equ ;; IF(Reg1<=Reg2) JMP Below_Equ
;; IF(Reg1> Reg2) unjump
ENDM
;; 两个寄存器(16Bit)比较,== 跳走,
;; 2 Byte Compare (==, !=),
;; Run Time Clock:
;; Program Length: 8
CJE2 MACRO Reg1_H,Reg1_L,Reg2_H,Reg2_L,Addr_Equ
CJNE Reg1_H,Reg2_H,$+5
CJE Reg1_L,Reg2_L,Addr_Equ
ENDM
;; 两个寄存器(16Bit)比较,!= 跳走,
;; 2 Byte Compare (==, !=),
;; Run Time Clock:
;; Program Length: 8
CJNE2 MACRO Reg1_H,Reg1_L,Reg2_H,Reg2_L,Addr_NoEqu
CJNE Reg1_H,Reg2_H,Addr_NoEqu
CJNE Reg1_L,Reg2_L,Addr_NoEqu
ENDM
;; 寄存器(16Bit)检查,为0跳走,
;; 2 Byte Check (=0, !=0)
;; Run Time Clock: =0→4,!=→3
;; Program Length: 6
JZ2 MACRO Reg1_H,Reg1_L,Addr_Zero
JNZ Reg1_H,$+4
JZ Reg1_L,Addr_Zero
ENDM
;; 寄存器(16Bit)检查,不为0跳走,
;; 1 Byte Check (=0, !=0)
;; Run Time Clock:
;; Program Length: 6
JNZ2 MACRO Reg1_H,Reg1_L,Addr_NZero
JNZ Reg1_H,Addr_NZero
JNZ Reg1_L,Addr_NZero
;; IF(Reg1=0) unjump
ENDM
;; 两个寄存器(16Bit)比较,第一个大于第二个跳走,
;; 2 Byte Compare ( >, <=) by Constant
;; Run Time Clock:
;; Program Length: 10
CJAC2 MACRO Reg1_H,Reg1_L,Constant_H,Constant_L,Addr_Above
MOV A,#Constant_H
SUB A,Reg1_H
B0BTS1 FC
JMP_RET Addr_Above ;; IF(Reg1> #Constant) JMP above
B0BTS1 FZ
JMP $+5
MOV A,#Constant_L
SUB A,Reg1_L
B0BTS1 FC
JMP_RET Addr_Above ;; IF(Reg1> #Constant) JMP above
;; IF(Reg1<=#Constant) unjump
ENDM
;; 两个寄存器(16Bit)比较,第一个大于等于第二个跳走,
;; 2 Byte Compare ( <, >=) by Constant
;; Run Time Clock:
;; Program Length: 11
CJAEC2 MACRO Reg1_H,Reg1_L,Constant_H,Constant_L,Addr_Above_Equ
MOV A,#Constant_H
SUB A,Reg1_H
B0BTS0 FZ
JMP $+4
B0BTS1 FC
JMP_RET Addr_Above_Equ ;; IF(Reg1>=#Constant) JMP above_Equ
JMP $+5
MOV A,Reg1_L
SUB A,#Constant_L
B0BTS0 FC
JMP_RET Addr_Above_Equ ;; IF(Reg1>=#Constant) JMP above_Equ
;; IF(Reg1< #Constant) unjump
ENDM
;; 两个寄存器(16Bit)比较,第一个小于第二个跳走,
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -