📄 stdmacro.inc
字号:
;=============================
;JBS R_RAM,D_BIT,L_LABLE
;JBC R_RAM,D_BIT,L_LABLE
;SEC
;CLC
;BEQ L_LABLE
;BNE L_LABLE
;BCS L_LABLE
;BCC L_LABLE
;BLE L_LABLE
;PUSH (MUST DEFINE RAM: ACC_BK,STATU_BK,,MP1_BK,BP_BK,TBLP_BK,TBHP_BK
;POP (MUST DEFINE RAM: ACC_BK,STATU_BK,,MP1_BK,BP_BK,TBLP_BK,TBHP_BK
;XMOV MEM1,MEM2
;XMOVB MEMB1,MEMB2
;SEZ
;CLZ
;JE LABLE
;JLG LABLE
;JLE LABLE
;JGE LABLE
;_SNZ MEM
;_SDNZ MEM
;_SINZ MEM
;jz lable
;jnz lable
#DEFINE D_C 0
#DEFINE D_Z 2
#DEFINE R_STATUS [0AH]
JBS MACRO R_RAM,D_BIT,L_LABLE
SZ R_RAM.D_BIT
JMP L_LABLE
ENDM
;//------------------------------------
JBC MACRO R_RAM,D_BIT,L_LABLE
SNZ R_RAM.D_BIT
JMP L_LABLE
ENDM
;//------------------------------------
SEC MACRO
SET R_STATUS.D_C
ENDM
;//------------------------------------
CLC MACRO
CLR R_STATUS.D_C
ENDM
;//------------------------------------
SEZ MACRO
CLR R_STATUS.2
ENDM
;//------------------------------------
CLZ MACRO
CLR R_STATUS.2
ENDM
;//------------------------------------
BEQ MACRO L_LABLE
SZ R_STATUS.D_Z
JMP L_LABLE
ENDM
;//------------------------------------
BNE MACRO L_LABLE
SNZ R_STATUS.D_Z
JMP L_LABLE
ENDM
;//------------------------------------
BCS MACRO L_LABLE
SZ R_STATUS.D_C
JMP L_LABLE
ENDM
;//------------------------------------
BCC MACRO L_LABLE
SNZ R_STATUS.D_C
JMP L_LABLE
ENDM
;//------------------------------------
;if <= then goto Address
BLE MACRO L_LABLE
SZ R_STATUS.D_Z
SNZ R_STATUS.D_C
JMP L_LABLE
ENDM
;//------------------------------------
PUSH MACRO
MOV ACC_BK,A ;ACC
MOV A,[0AH]
MOV STATUS_BK,A ;STATU
MOV A,MP1
MOV MP1_BK,A ;MP1
MOV A,BP
MOV BP_BK,A ;BP
MOV A,TBLP
MOV TBLP_BK,A ;TBLP
MOV A,TBHP
MOV TBHP_BK,A ;TBHP
ENDM
;//------------------------------------
POP MACRO
MOV A,TBLP_BK ;TBLP
MOV TBLP,A
MOV A,TBHP_BK ;TBHP
MOV TBHP,A
MOV A,MP1_BK ;MP1
MOV MP1,A
MOV A,BP_BK ;BP
MOV BP,A
MOV A,STATUS_BK ;STATU
MOV [0AH],A
MOV A,ACC_BK ;ACC
ENDM
;//------------------------------------
XMOV MACRO MEM1,MEM2
MOV A,MEM2
MOV MEM1,A
ENDM
;//------------------------------------
XMOVB MACRO MEMB1,MEMB2
CLR MEMB1
SZ MEMB2
SET MEMB2
ENDM
;//------------------------------------
;IF A==[M] LABLE
JE MACRO LABLE
SZ R_STATUS.2
JMP LABLE
ENDM
;//------------------------------------
;IF A<>[M] LABLE
JLG MACRO LABLE
SNZ R_STATUS.2
JMP LABLE
ENDM
;//------------------------------------
;IF A<=[M] LABLE
JLE MACRO LABLE
SNZ R_STATUS.2
SNZ R_STATUS.0
JMP LABLE
ENDM
;//------------------------------------
;IF A>=[M] LABLE
JGE MACRO LABLE
SNZ R_STATUS.2
SZ R_STATUS.0
JMP LABLE
ENDM
;//------------------------------------
_SNZ MACRO mem
sz mem
jmp $+2
ENDM
;//------------------------------------
_SDNZ MACRO mem
sdz mem
jmp $+2
ENDM
;//------------------------------------
_SINZ MACRO mem
siz mem
jmp $+2
ENDM
;//------------------------------------
jz macro lable
sz Rstatus.2
jmp lable
endm
;//------------------------------------
jnz macro lable
snz Rstatus.2
jmp lable
endm
;//===================================================
;
; A - B
; C Z
; A < B 0 0
; A = B 1 1
; A > B 1 1
;
; A - B = A + B's 2's complement
;
SKP_Z MACRO
SNZ Z
ENDM
SKP_NZ macro
SZ Z
endm
SKP_C macro
SNZ C
endm
SKP_NC macro
SZ C
endm
jmp_Z macro where
SKP_NZ
jmp where
endm
jmp_NZ macro where
SKP_Z
jmp where
endm
jmp_E macro where ; the same as JMP_Z
skp_NZ
jmp where
endm
jmp_NE macro where ; teh same as JMP_NZ
skp_Z
jmp where
endm
jmp_NC macro where
SKP_C
jmp where
endm
jmp_C macro where
SKP_NC
jmp where
endm
skp_GE macro ; skip if greater and equal
skp_C
endm
skp_L macro ; skip if smaller
skp_NC
endm
jmp_L macro where ; jmp if less
skp_GE
jmp where
endm
jmp_GE macro where ; jmp if greater and equal
skp_L
jmp where
endm
Save_ACC_STS macro
mov tempAcc,A
mov A,Status
mov tempSTS,A
endm
Restore_Acc_Sts macro
mov A,tempSTS
mov STatus,A
mov A,tempAcc
endm
Define_Acc_Sts_storage macro
tempAcc db ?
tempSTS db ?
endm
Xmov1 macro Destination, Source
mov tempAcc,A
mov A,source
mov Destination, A
mov A,tempAcc
endm
Load_A_With_B macro A,B
xmov1 A,B
endm
;//=====================================================
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -