8051汇编——十进制加减计数

实现4位十进制加、减1计数,千位、百位由P1口输出;十位、个位由P2口输出。利用P3.7状态选择加、减计数方式。
利用P3口低四位状态控制开始和停止计数,控制方式自定(此处用P3.0为高电平开始计数,为低电平计数停止)。

ORG		0000H
LJMP	MAIN

ORG		0100H
MAIN:
MOV		P2,		#0
MOV		P0,		#0
MOV		R7,		#0
MOV		R6,		#0
LOOP:
JNB		P3.0,	LOOP
LCALL	NUM_OPER
LCALL	NUM_DISP
LJMP	LOOP

NUM_OPER:
JNB		P3.7,	DEC_OPER
		INC_OPER:
		CJNE	R6,		#99H,	N_CARRY1
		CARRY1:
		MOV		R6,		#0
		CJNE	R7,		#99H,	N_CARRY2
				CARRY2:
				MOV		R7,		#0
				RET
				N_CARRY2:
				MOV		A,		#1
				ADD		A,		R7
				DA		A
				MOV		R7,		A
				RET
		N_CARRY1:
		MOV		A,		#1
		ADD		A,		R6
		DA		A
		MOV		R6,		A
		RET
		
		DEC_OPER:
		CJNE	R6,		#00H,	N_CARRY3
		CARRY3:
		MOV		R6,		#99H
		CJNE	R7,		#00H,	N_CARRY4
				CARRY4:
				MOV		R7,		#99H //为-1相对于(9AH)的补码
				RET
				N_CARRY4:
				MOV		A,		#99H
				ADD		A,		R7
				DA		A
				MOV		R7,		A
				RET
		N_CARRY3:
		MOV		A,		#99H
		ADD		A,		R6
		DA		A
		MOV		R6,		A
		RET

NUM_DISP:
MOV		P1,		R7
MOV		P2,		R6
RET
END


版权声明:本文为cxiaobaizzf原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接和本声明。