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

📄 fdd2.asm

📁 通过调试的有用的单片机控制程序
💻 ASM
字号:
;入口条件:查找内容在R4、R5中,表格首址在DPTR中,数据个数在R7中。
;出口信息:OV=0 时顺序号在累加器A中,址在DPTR中		;OV=1 时未找到。
;影响资源:PSW、A、B、R1~R7、DPTR    堆栈需求:  2字节

FDD2:	MOV	R2,#0		;区间低端指针初始化(指向第一个数据)
	MOV	A,R7
	DEC	A
	MOV	R3,A		;区间高端指针初始化,指向最后一个数据
	MOV	R6,DPH		;保存表格首址
	MOV	R7,DPL
FD81:	CLR	C			;判断区间大小
	MOV	A,R3
	SUBB	A,R2
	JC	FD89		;区间消失,查找失败
	RRC	A			;取区间大小的一半
	ADD	A,R2		;加上区间的低端
	MOV	R1,A		;得到区间的中心
	MOV	DPH,R6
	CLR	C			;计算区间中心的地址
	RLC	A
	JNC	FD82
	INC	DPH
FD82:	ADD	A,R7
	MOV	DPL,A
	JNC	FD83
	INC	DPH
FD83:	CLR	A			;读取该点的内容的高字节
	MOVC	A,@A+DPTR
	MOV	B,R4		;与待查找内容的高字节比较
	CJNE	A,B,FD84	;不相同
	MOV	A,#1			;读取该点的内容的低字节
	MOVC	A,@A+DPTR
	MOV	B,R5
	CJNE	A,B,FD84	;与待查找内容的低字节比较
	MOV	A,R1		;取顺序号
	CLR	OV			;查找成功
	RET
FD84:	JC	FD86		;该点的内容比待查找的内容大否?
	MOV	A,R1		;偏大,取该点位置
	DEC	A			;减一
	MOV	R3,A		;作为新的区间高端
	SJMP	FD81		;继续查找
FD86:	MOV	A,R1		;偏小,取该点位置
	INC	A			;加一
	MOV	R2,A		;作为新的区间低端
	SJMP	FD81		;继续查找
FD89:	MOV	DPH,R6		;相同,恢复首址
	MOV	DPL,R7
	SETB	OV			;查找失败
	RET

⌨️ 快捷键说明

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