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

📄 delete.asm

📁 在定时器中断中做LED的PWM输出 AT89C2051实现A/D转换的C51程序 单片机开发系统 指令系统 程序设计 定时与中断 系统扩展 接口技术 串行口
💻 ASM
字号:
;单字节表格的删除算法
FRONT	EQU	40H	;表格首址。
NUMB	DATA	31H	;已有元素个数存放单元。
I	DATA	32H	;待删除元素的序号存放单元。

	ORG	0000H
	LJMP	TEST
	
	ORG	100H
TEST:	MOV	DPTR,#DAT	;设置单字节表格
	MOV	R0,#FRONT
	MOV	R2,#16
COPY:	CLR	A
	MOVC	A,@A+DPTR
	MOV	@R0,A
	INC	R0
	INC	DPTR
	DJNZ	R2,COPY
	MOV	NUMB,#0DH	;已经有13个数据
	MOV	I,#0AH		;准备删除序号为10的元素(第11个元素)
	LCALL	DELETE		;调用删除算法
STOP:	LJMP	STOP
DAT:	DB	53H,87H,12H,9AH
	DB	2FH,3CH,0A8H,0BCH
	DB	37H,15H,8EH,0F2H
	DB	0C3H,0,0,0

DELETE:	SETB	C	;初始化失败标志。
	MOV	A,NUMB	;表格空否?
	JZ	DELEND	;表格已空,删除失败。
	MOV	A,#FRONT;取表格首址。
	ADD	A,I	;加偏移量。
	MOV	R0,A	;得到删除的实际地址。
	MOV	A,NUMB	;删除位置超出范围否?
	SETB	C
	SUBB	A,I
	JC	DELEND	;位置不合理,删除失败。
	JZ	DEL	;不需要移动元素。
	MOV	R2,A	;保存需要移动元素的个数。
MOVS:	INC	R0
	MOV	A,@R0	;取一个元素。
	DEC	R0
	MOV	@R0,A	;前移一个位置。
	INC	R0	;调整指针。
	DJNZ	R2,MOVS	;移完需要移动的元素。
DEL:	DEC	NUMB	;元素个数减一。
	CLR	C	;删除成功。
DELEND:	RET		;算法结束。
	END

⌨️ 快捷键说明

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