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 + -
显示快捷键?