⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 macro.inc

📁 holtek的按键模块, asm编程
💻 INC
字号:
.NOLISTMACRO
;-----------------------------------------------------------------------------
;	Macro.inc	(Holtek asm)
;
;	By: Stonelu		1998.4.13
;----------------------------------------------------------------------------
sjmp	EQU	jmp
ljmp	EQU	jmp
bCarry	EQU	STATUS.0		;加法时有进位,减法没有借位  C=1
bZero	EQU	STATUS.2		;运算结果=0置位  <>0 时 bZero=0
EA	EQU	INTC.0
@R0	EQU	R0
@R1	EQU	R1

if 0
;----	cplbit	bit 位取反
cplbit	macro	bit
	sz	bit
	jmp	$+3
	set	bit
	jmp	$+2
	clr	bit
	endm
endif
;----	jz  dest   ACC等于0,跳转    3bytes
; used	null

jz	macro	dest
	jb	bZero,dest
	endm

;----	jnz  dest   ACC不等于0,跳转    3bytes
; used	null

jnz	macro	dest
	jnb	bZero,dest
	endm



;----	sjz  data,dest	 等于0,跳转    3bytes
; data	 为数据存储器/can't be ACC
; used	null

sjz	macro	data,dest
	sz	data
	jmp	$+2
	jmp	dest
	endm


;----	sjnz data,dest	不等于0,跳转  2bytes
; data	 为数据存储器/can't be ACC
; used	null

sjnz	macro	data,dest
	sz	data
	jmp	dest
	endm



;----	djnz data,dest	data减-1 若结果不等于0,跳转  2bytes
; data	 为数据存储器/can't be ACC
; used	null

djnz	macro	data,dest
	sdz	data
	jmp	dest
	endm




;----	jb   bit,dest  若结果位bit等于1,跳转  2bytes
; data	 为位地址
; used	null

jb	macro	bit,dest
	sz	bit
	jmp	dest
	endm


;----	jnb  bit,dest  若结果位bit等于0,跳转  2bytes
; data	 为位地址
; used	null

jnb	macro	bit,dest
	snz	bit
	jmp	dest
	endm


;----	jc   dest  若C等于1,跳转  2bytes
; used	null

jc	macro	dest
	sz	STATUS.0
	jmp	dest
	endm


;----	jnc  dest  若C等于0,跳转  2bytes
; used	null

jnc	macro	dest
	snz	STATUS.0
	jmp	dest
	endm



;----	cjb  A,var,dest  若<var, jmp  3bytes
; var	可以是数据存储器,也可以是立即数
; used	STATUS,影响标志位等

ajb	macro	A,var,dest
	sub	A,var
	jnc	dest			;C=0 有借位
	endm


;----	cjae A,var,dest  若>=var, jmp  3bytes
; var	可以是数据存储器,也可以是立即数
; used	STATUS,影响标志位等

ajae	macro	A,var,dest
	sub	A,var
	jc	dest			;C=1 没有借位
	endm



;----	cjb  data,var,dest  若data<var, jmp  4bytes
; var	可以是数据存储器,也可以是立即数
; used	STATUS,影响标志位等

cjb	macro	data,var,dest
	mov	A,data
	sub	A,var
	jnc	dest			;C=0 有借位
	endm


;----	cjae data,var,dest  若data>=var, jmp  4bytes
; var	可以是数据存储器,也可以是立即数
; used	STATUS,影响标志位等

cjae	macro	data,var,dest
	mov	A,data
	sub	A,var
	jc	dest			;C=1 没有借位
	endm



;----	cjne data,var,dest  若data!=var, jmp  4bytes
; var	可以是数据存储器,也可以是立即数
; used	ACC,STATUS

cjne	macro	data,var,dest
	mov	A,data
	ajne	A,var,dest
	endm

;----	cje  data,var,dest  若data!=var, jmp  4bytes
; var	可以是数据存储器,也可以是立即数
; used	ACC,STATUS

cje	macro	data,var,dest
	mov	A,data
	aje	A,var,dest
	endm



;----	ajne A,var,dest  若A!=var, jmp	2bytes
; var	可以是数据存储器,也可以是立即数
; used	STATUS,影响标志位等

ajne	macro	A,var,dest
	sub	A,var
	jnz	dest
	endm

;----	aje  A,var,dest  若A!=var, jmp	4bytes
; var	可以是数据存储器,也可以是立即数
; used	null

aje	macro	A,var,dest
	sub	A,var
	jz	dest
	endm






;----	store value,var  存value to var
; value & var can't be ACC
; used	ACC

store	macro	value,var
	mov	A,value
	mov	var,A
	endm

;----	load  dest,src	[src]-->[dest]
; dest & src can't be ACC
; used	ACC

load	macro	dest,src
	mov	A,src
	mov	dest,A
	endm


;---	getptr	rl,rh,var
; used	ACC

getptr1 macro rl,rh,var
	store	low (var),rl
	if (var) and 0ff00h
	store	high (var),rh
	else
	clr	rh
	endif
	endm


;---	putc  显示一字符

putc	macro	var
	mov	A,var
	call	_PutCh
	endm

;---	cdw   两数组合为一16为数

cdw	macro	ch,cl
	dw	ch*256+cl
	endm


;--------------------------------------------------------------
;	根据不同显示器,调用不同软件
;-------------------------------------------------------------

;---	LCDset	点亮假汉显某一段汉字

jhxset	macro	var
	if mLCDjhx
	set	var
	endif
	endm


;---	LCDclr	灭假汉显某一段汉字

jhxclr	macro	var
	if mLCDjhx
	clr	var
	endif
	endm


;--- iconst	设置宽屏汉显汉字字段控制字

iconst	macro	value,var
	if mLCDwide
	  store value,var
	endif
	endm
Bcall	macro	addr
	jmp	addr
	endm 
BReturn	macro	
	jmp	Return_B
	endm
Ccall	macro	addr
	jmp	addr
	endm
CReturn	macro
	jmp	Return_C
	endm



.LIST

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -