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

📄 mms.asm

📁 通过调试的有用的单片机控制程序
💻 ASM
字号:
DATCOUNT EQU    23
DATMAX  DATA    40H
DATMAXH DATA    41H
DATMAXL DATA    42H
DATMIN  DATA    43H
DATMINH DATA    44H
DATMINL DATA    45H
MMS:	MOV	B,DATCOUNT		;保存数据个数
	MOVX	A,@DPTR	         ;读取第一个数据
	MOV	DATMAX,A		;作为最大值的初始值
	MOV	DATMIN,A		;也作为最小值的初始值
	MOV	A,DPL		;取第一个数据的地址
	MOV	DATMAXL,A		;作为最大值存放地址的初始值
	MOV	DATMINL,A		;也作为最小值存放地址的初始值
	MOV	A,DPH
	MOV	DATMAXH,A
	MOV	DATMINH,A
	MOV	A,B			;取数据个数
	DEC	A			;减一,得到需要比较的次数
	JZ	MMSE		;只有一个数据,不需要比较
	MOV	R1,A		;保存比较次数
	PUSH	DPL			;保护数据块的首址
	PUSH	DPH
MMS1:	INC	DPTR		;调整数据指针
	MOVX	A,@DPTR	;读取一个数据
	MOV	B,A			;保存
	SETB	C			;与最大值比较
	SUBB	A,DATMAX
	JZ	MMS4		;相同,不更新最大值
	JNB	OV,MMS2	;差未溢出,符号位有效
	CPL	ACC.7		;差溢出,符号位取反
MMS2:	JB	ACC.7,MMS4	;差为负,不更新最大值
	MOV	DATMAX,B		;更新最大值
	MOV	DATMAXH,DPH		;更新最大值存放地址
	MOV	DATMAXL,DPL
	SJMP	MMS7
MMS4:	MOV	A,B			;与最小值比较
	CLR	C
	SUBB	A,DATMIN
	JNB	OV,MMS6	;差未溢出,符号位有效
	CPL	ACC.7		;差溢出,符号位取反
MMS6:	JNB	ACC.7,MMS7	;差为正,不更新最小值
	MOV	DATMIN,B		;更新最小值
	MOV	DATMINH,DPH		;更新最小值存放地址
	MOV	DATMINL,DPL
MMS7:	DJNZ	R1,MMS1	;处理完全部数据
	POP	DPH			;恢复数据首址
	POP	DPL
MMSE:		RET 	

⌨️ 快捷键说明

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