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

📄 storedata.asm

📁 这是用台湾KingB 8位单片机开发的科学计算器程序
💻 ASM
字号:
;/subrutine name : StoreData.asm
;/user bady      : HE 
;/fast clock     : 4Mhz
;/slow clock     : 32768khz
;/programer      : Alton
;
;
.A			EQU	0Xa8
.B			EQU	0Xb7
.C			EQU	0Xb8
.D			EQU	0Xb9
.E			EQU	0Xc0
.F			EQU	0Xc1
.X			EQU	0Xb3
.Y			EQU	0Xb4
.M			EQU	0Xb5
.SartPP			EQU	0x02
.Point			EQU	0xa0
.Fract			EQU	0xc3
			 


			
       			.area  stocode(code,rel)
.StoData::
		call	.CKEQUAC
		lda	#>.SFlag
		sta	PP
		lda	.SFlag
		anda	#~7fh
		sta 	.SFlag		
		lda 	#.SartPP
		sta	PP		
		lda0	.DataDP
		sta	DP
		cmpe	#4fh
		brc	.InpErr 
		lda0	.KeyPos	
		cmpe	#10h
		brnz	.Savedat
		lda	#0h
.Savedat:		
		sta	i
		incdp
		lda	DP
		sta0	.DataDP
		lda0	.KeyPos			
		cmpe	#0b4h
		brnz	.EndStoData
		lda	#01h
		sta0	.CommaFlag
		br	.EndStoData
.InpErr:		
		lda	#03h
		sta0	ErrorFlag					
.EndStoData:
		lda	#0h
		sta	PP	
		ret
;-------------------------------------------
.ClrRAM::
		
		lda	#02h
		sta0	.KeyC
		lda	#0h
		sta	DP
.ClrRAMD:		
		lda0	.KeyC
		sta	PP		
		lda	#0h
		sta	i
		incdp
		lda	DP
		cmpe	#0h
		brnz	.ClrRAMD		
		lda0	.KeyC
		cmpe	#06h
		brz	.EndClrRAM
		lda0	.KeyC
		inca
		sta0	.KeyC
		br	 .ClrRAMD
.EndClrRAM:
		lda	#0h
		sta	PP
		ret
;-------------------------------------------
.STOReg::		
		lda	#0h
		sta 	PP	
		call	.I_trans_Z	
		call	.Z_trans_X
		lda0	.KeyPos
		cmpe	#.A
		brz	.STOA
		cmpe	#0e3h
		brz	.STOA
		br 	.CKSTOB		
.STOA:		
		call	.X_TO_A
		lda	#0e3h
		br	.EndSTOReg		
.CKSTOB:
		cmpe	#.B
		brz	.STOB
		cmpe	#0e4h
		brz	.STOB
		br  	.CKSTOC	
.STOB:			
		call	.X_TO_B
		lda	#0e4h
		br	.EndSTOReg		
.CKSTOC:
		cmpe	#.C
		brz	.STOC
		cmpe	#0e5h
		brz	.STOC
		br  	.CKSTOD	
.STOC:			
		call	.X_TO_C
		lda	#0e5h
		br	.EndSTOReg		
.CKSTOD:
		cmpe	#.D
		brz	.STOD
		cmpe	#0e6h
		brz	.STOD
		br  	.CKSTOE
.STOD:			
		call	.X_TO_D
		lda	#0e6h
		br	.EndSTOReg		
.CKSTOE:
		cmpe	#.E
		brz	.STOE
		cmpe	#0e7h
		brz	.STOE
		br  	.CKSTOF
.STOE:			
		call	.X_TO_E
		lda	#0e7h
		br	.EndSTOReg		
.CKSTOF:
		cmpe	#.F
		brz	.STOF
		cmpe	#0e8h
		brz	.STOF
		br  	.CKSTOX
.STOF:			
		call	.X_TO_F
		lda	#0e8h
		br	.EndSTOReg		
.CKSTOX:
		cmpe	#.X
		brz	.STOX
		cmpe	#0f5h
		brz	.STOX
		br  	.CKSTOY
.STOX:			
		call	.X_TO_X
		lda	#0f5h
		br	.EndSTOReg		
.CKSTOY:
		cmpe	#.Y
		brz	.STOY
		cmpe	#0f6h
		brz	.STOY
		br  	.CKSTOM
.STOY:			
		call	.X_TO_Y
		lda	#0f6h
		br	.EndSTOReg		
.CKSTOM:
		cmpe	#.M
		brz	.STOM
		cmpe	#0f7h
		brz	.STOM
		br  	.EndSTO 
.STOM:					
		call	.X_TO_M		 
		lda	#0f7h
		br	.EndSTOReg

		 
.EndSTOReg:	
		
		sta0	.KeyPos 
		
		lda	#01h
		sta	PP
		lda	StateFlag
		anda	#08h		 
		brz	1$
		call	.IsBaseNMode	
1$:		
		lda0	.FormulaFlag
		cmpe	#01h
		brz	.EndSTO
		lda	#>.SFlag
		sta	PP
		lda	.SFlag
		anda	#~40h
		sta	.SFlag
		call	.ShowMem
.EndSTO:	
		ret
;-------------------------------------------
.RCLReg::	
			
		lda0	.KeyPos
		cmpe	#0e3h
		brz	.RCLA		
		cmpe	#.A
		brnz	.CKRCLB
.RCLA:		
		call	.A_TO_Z
		lda	#0e3h		
		br	.EndRCLReg		
.CKRCLB:
		cmpe	#0e4h
		brz	.RclB
		cmpe	#.B
		brnz	.CKRCLC
.RclB:		
		call	.B_TO_Z	
		lda	#0e4h	
		br	.EndRCLReg		
.CKRCLC:
		cmpe	#0e5h
		brz	.RclC
		cmpe	#.C
		brnz	.CKRCLD
.RclC:		
		call	.C_TO_Z
		lda	#0e5h		
		br	.EndRCLReg		
.CKRCLD:
		cmpe	#0e6h
		brz	.RclD
		cmpe	#.D
		brnz	.CKRCLE
.RclD:		
		call	.D_TO_Z	
		lda	#0e6h	
		br	.EndRCLReg		
.CKRCLE:
		cmpe	#0e7h
		brz	.RclE
		cmpe	#.E
		brnz	.CKRCLF
.RclE:		
		call	.E_TO_Z	
		lda	#0e7h	
		br	.EndRCLReg		
.CKRCLF:
		cmpe	#0e8h
		brz	.RclF
		cmpe	#.F
		brnz	.CKRCLX
.RclF:		
		call	.F_TO_Z	
		lda	#0e8h	
		br	.EndRCLReg		
.CKRCLX:
		cmpe	#0F5h
		brz	.RclX
		cmpe	#.X
		brnz	.CKRCLY
.RclX:		
		call	.X_TO_Z	
		lda	#0f5h	
		br	.EndRCLReg		
.CKRCLY:
		cmpe	#0F6h
		brz	.RclY
		cmpe	#.Y
		brnz	.CKRCLM		
.RclY:
		call	.Y_TO_Z	
		lda	#0f6h	
		br	.EndRCLReg		
.CKRCLM:
		cmpe	#0F7h
		brz	.RclZ
		cmpe	#.M
		brnz	.EndRCLd
.RclZ:		
		call	.M_TO_Z	
		lda	#0f7h	
.EndRCLReg:	
		sta0	.KeyPos 
		call	.Z_trans_I
		call	.Z_trans_Buf
		lda	#01h
		sta	PP
		lda	StateFlag
		anda	#08h
		brz	1$
		call	.IsBaseNMode
1$:		
		lda0	.DataDP		;;4/16
		cmpe	#0h		;;
		brnz	.StoRclCode	;;		
		lda	#>StateFlag
		sta	PP
		lda	.SFlag
		anda	#~40h		
		ora	#08h
		sta	.SFlag
		lda	StateFlag
		anda	#08h
		brz	.Endrcl
		
		 			
.Endrcl:	
		;call	.Z_trans_I
		lda0	.FormulaFlag
		cmpe	#01h
		brz	.EndRCLd
		
		call	.ShowMem
		br	.EndRCLd
.StoRclCode:	
		lda	#>.SFlag
		sta	PP
		lda	.SFlag		;clear rcl flag
		anda	#08h
		brz	.SaveRclCode
		call	.ClrP2Edit
		lda	#0h
		sta0	.DataDP	
.SaveRclCode:			
		lda	.SFlag	
		anda	#~28h
		sta	.SFlag	
		lda0	.SFDP		;Check Cursor is tail SFDP=0
		cmpe	#0h
		brnz	.EndRCLd
		lda0	.DataDP
		sta	DP
		lda	#02h
		sta	PP
		lda0	.KeyPos
		sta	i
		incdp
		lda	DP
		sta0	.DataDP
		
.EndRCLd:
		ret
 
.IsBaseNMode::
		call	.I_trans_Z
		call	.Z_trans_X	
		lda	#01h
		sta	PP	
		lda	BasenFlag
		anda	#0f0h
		cmpe	#80h
		brz	.DecMode	
		cmpe	#40h
		brz	.HexMode
		cmpe	#20h
		brz	.BinMode
		call	Base_Dec2Oct	
		call	.Z_trans_X
		call	CheckOctLimit		
		ret
.DecMode:
		 
		call	.Z_trans_X
		call	CheckDecLimit		
		ret
.BinMode:		
		call	Base_Dec2Bin	
		call	.Z_trans_X
		call	CheckBinLimit
		ret
.HexMode:		
		call	Base_Dec2Hex
		call	.Z_trans_X
		call	CheckHexLimit
		ret	
		
.ShowMem:		
		call	.ClrP2Edit
		lda	#0h
		sta0	.DataDP				
		sta	DP
		lda	#02h
		sta	PP
		lda0	.KeyPos
		sta	i
		lda	#01h
		sta0	.DataDP	
		
		lda	#>.SRFlag
		sta	PP
		lda	#01h	 
		sta	.SRFlag
		lda0	.FormulaFlag
		cmpe	#0h
		brz	.EndShowMem
		lda	#>.SRFlag
		sta	PP
		lda	#0h	 
		sta	.SRFlag
.EndShowMem:		
		ret	

⌨️ 快捷键说明

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