macro.inc
来自「NEC 的无线通讯方案」· INC 代码 · 共 419 行
INC
419 行
;*
;* $Id: macro.inc,v 1.2 2007/08/17 06:21:52 sunny Exp $
;*
; Copyright (C) NEC Electronics Corporation 1990,2005
; NEC ELECTRONICS CONFIDENTIAL AND PROPRIETARY
; All rights reserved by NEC Electronics Corporation.
; This program must be used solely for the purpose for which
; it was furnished by NEC Electronics Corporation. No part of this
; program may be reproduced or disclosed to others, in any
; form, without the prior written permission of NEC Electronics
; Corporation. Use of copyright notice does not evidence
; publication of the program.
;-------------------------------------
;
; Version 3.70 07 Feb 2005
;-------------------------------------
;
; AX <- argument( [PO+ARG] )
;
;-------------------------------------
LDARG MACRO ARG,PO
MOV A,[PO+ARG]
XCH A,X
MOV A,[PO+ARG+1]
ENDM
;-------------------------------------
;
; argument( [PO+ARG] ) <- AX
;
;-------------------------------------
STARG MACRO ARG,PO
MOV [PO+ARG+1],A
XCH A,X
MOV [PO+ARG],A
ENDM
;-------------------------------------
;
; ADD register,register
;
;-------------------------------------
ADDB MACRO REG1,REG2
XCH A,REG2
ADD REG1,A
XCH A,REG2
ENDM
;-------------------------------------
;
; ADDC register,register
;
;-------------------------------------
ADDBC MACRO REG1,REG2
XCH A,REG2
ADDC REG1,A
XCH A,REG2
ENDM
;-------------------------------------
;
; SUB register,register
;
;-------------------------------------
SUBB MACRO REG1,REG2
XCH A,REG2
SUB REG1,A
XCH A,REG2
ENDM
;-------------------------------------
;
; SUBC register,register
;
;-------------------------------------
SUBBC MACRO REG1,REG2
XCH A,REG2
SUBC REG1,A
XCH A,REG2
ENDM
;-------------------------------------
;
; ROLC register,1
;
;-------------------------------------
ROLCB MACRO REG1
XCH A,REG1
ROLC A,1
XCH A,REG1
ENDM
;-------------------------------------
;
; RORC register,1
;
;-------------------------------------
RORCB MACRO REG1
XCH A,REG1
RORC A,1
XCH A,REG1
ENDM
;-------------------------------------
;
; SHRW DE,1
;
;-------------------------------------
SHRDE MACRO
XCH A,D
CLR1 CY
RORC A,1
XCH A,D
XCH A,E
RORC A,1
XCH A,E
ENDM
;-------------------------------------
;
; SHRW HL,1
;
;-------------------------------------
SHRHL MACRO
XCH A,H
CLR1 CY
RORC A,1
XCH A,H
XCH A,L
RORC A,1
XCH A,L
ENDM
;-------------------------------------
;
; SHLW DE,1
;
;-------------------------------------
SHLDE MACRO
XCH A,E
ADD A,A
XCH A,E
XCH A,D
ROLC A,1
XCH A,D
ENDM
;-------------------------------------
;
; SHLW HL,1
;
;-------------------------------------
SHLHL MACRO
XCH A,L
ADD A,A
XCH A,L
XCH A,H
ROLC A,1
XCH A,H
ENDM
;-------------------------------------
;
; ADDW AX,HL
;
;-------------------------------------
ADDHL MACRO
XCH A,X
ADD A,L
XCH A,X
ADDC A,H
ENDM
;-------------------------------------
;
; ADDW AX,DE
;
;-------------------------------------
ADDDE MACRO
XCH A,X
ADD A,E
XCH A,X
ADDC A,D
ENDM
;-------------------------------------
;
; SUBW AX,HL
;
;-------------------------------------
SUBHL MACRO
XCH A,X
SUB A,L
XCH A,X
SUBC A,H
ENDM
;-------------------------------------
;
; SUBW AX,DE
;
;-------------------------------------
SUBDE MACRO
XCH A,X
SUB A,E
XCH A,X
SUBC A,D
ENDM
;-------------------------------------
;
; ADDW AX,SADDR
;
;-------------------------------------
ADDWS MACRO SAD
XCH A,X
ADD A,SAD
XCH A,X
ADDC A,SAD+1
ENDM
;-------------------------------------
;
; SUBW AX,SADDR
;
;-------------------------------------
SUBWS MACRO SAD
XCH A,X
SUB A,SAD
XCH A,X
SUBC A,SAD+1
ENDM
;-------------------------------------
;
; CMPW AX,SADDR
;
;-------------------------------------
CMPWS MACRO SAD
LOCAL C_SKIP
CMP A,SAD+1
BNZ $C_SKIP
XCH A,X
CMP A,SAD
XCH A,X
C_SKIP:
ENDM
;-------------------------------------
;
; CMPW AX,DE
;
;-------------------------------------
CMPDE MACRO
LOCAL C1_SKIP
CMP A,D
BNZ $C1_SKIP
XCH A,X
CMP A,E
XCH A,X
C1_SKIP:
ENDM
;-------------------------------------
;
; CMPW AX,HL
;
;-------------------------------------
CMPHL MACRO
LOCAL C2_SKIP
CMP A,H
BNZ $C2_SKIP
XCH A,X
CMP A,L
XCH A,X
C2_SKIP:
ENDM
;-------------------------------------
;
; SAVE SADDR N...WORD UNIT
;
; work = AX,HL,B
;
;-------------------------------------
SAVSAD MACRO SAD,N
MOVW HL,#SAD+N*2-2
MOV B,#N
SA_1:
MOV A,[HL]
XCH A,X
MOV A,[HL+1]
PUSH AX
DECW HL
DECW HL
DBNZ B,$SA_1
ENDM
;-------------------------------------
;
; LOAD SADDR N...WORD UNIT
;
; work = AX,HL,B
;
;-------------------------------------
LODSAD MACRO SAD,N
MOVW HL,#SAD
MOV B,#N
LO_1:
POP AX
MOV [HL+1],A
XCH A,X
MOV [HL],A
INCW HL
INCW HL
DBNZ B,$LO_1
ENDM
;-------------------------------------
;
; inc saddrp
;
;-------------------------------------
INCWS MACRO SAD
MOVW AX,SAD
INCW AX
MOVW SAD,AX
ENDM
;-------------------------------------
;
; dec saddrp
;
;-------------------------------------
DECWS MACRO SAD
MOVW AX,SAD
DECW AX
MOVW SAD,AX
ENDM
⌨️ 快捷键说明
复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?