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

📄 squ.asm

📁 这是用台湾KingB 8位单片机开发的科学计算器程序
💻 ASM
字号:
;/subrutine name : Squ.asm
;/user bady      : 
;/fast clock     :  
;/slow clock     :  
;/programer      : Alton
;
;
;
;-------------------------------------------
       			.area   Squ_code(code,rel)
.Squ::
Squ::
		lda	SignX
		cmpe	#01h
		brz	.Error		
		lda	#OperandX
		sta	Addr1
		call	CheckData		
		lda	PointX		
		suba	DpCount
		sta	PointX
		call	.X_trans_I	;SourceX
		lda	DpCount
		cmpe	#0h
		brz	.EndSqu
		sta	PointX		
		call	.X_trans_Buf	;Buf Store X
		call	.ClrY
		lda	#01h		;Y=1+X
		sta	OperandY+6
		call	Addition		
		call	.YisPoint5		
		call	.Z_trans_R		
		
.CalcSqu:	
		call	.R_trans_Y	;R store a	
		call	.Buf_trans_X
		call	Division
		call	.Z_trans_X
		call	.R_trans_Y
		call	Addition
		call	.YisPoint5
		call	.Z_trans_B   	;B store b
			
		call	.B_trans_X
		call	.R_trans_Y
		call	Subtration
		lda	#0h
		sta	SignZ
		call	.Z_trans_X
		call	.ClrY
		lda	#01h
		sta	OperandY+6
		lda	#0eh
		sta	PointY
		call	Subtration
		lda	#OperandZ
		sta	Addr1
		call	CheckData
		lda	DpCount
		cmpe	#0h
		brz	.AddExp
		lda	SignZ
		cmpe	#01h
		brz	.AddExp
		call	.B_trans_X	;a=b;
		call	.X_trans_R
		br	.CalcSqu
.AddExp:
		call	.R_trans_X
		call	.X_trans_Buf		
		call	.I_trans_X
		lda	PointX
		cmpe	#80h
		brc	.Beyond0
		call	.GetQ				
		lda	OperandX+6
		cmpe	#0h
		brnz	.2$		 
		call	.Put_1_to_OperandX
		lda	PointY
		br	.6$
.2$:		
		 
		call	.Squ10	
		call	.Z_trans_X
.3$:					
		lda	PointY
		inca
.6$:				
		sta	PointY				
		lda	#01h
		sta	OperandY+6		
		call    Multiplation
		call	.Z_trans_Y				
		call	.Buf_trans_X		
		call    Multiplation
.EndSqu:		
		ret
;-------------------------------------------		
.Beyond0:				
		call	.GetQ	 
		lda	OperandX+6
		cmpe	#0h
		brnz	.4$			 
		call	.Put_1_to_OperandX
		br	.5$
.4$:				 
		call	.Squ10	
		call	.Z_trans_X
.5$:		 		
		lda	#0h
		suba	PointY								
		br	.6$
;-------------------------------------------
.GetQ:
		call	.ClrX
		call	.I_trans_Z
		lda0	PointZ
		cmpe	#80h
		brnc	.9$
		lda	#0h
		suba	PointZ
		sta0	PointZ			 
.9$:		
		lda	#>.M_hexbuf
		sta	PP
		lda0	PointZ
		sta	.M_hexbuf+1
		call	.Hex2Bcd
		anda	#01h
		sta0	OperandX+6				
		call	.ClrY
		lda	#>.M_hexbuf
		sta	PP
		lda	.M_bcdbuf+1		 		 	 	
		sta	.M_bcdbuf
		call	.bcdtohex
		rorc
		sta0	PointY
		lda	#0h
		sta	PP
		ret				
 		
;-------------------------------------------		
.Squ10:		
		lda	#@(Squ10)
		sta	TableC+1	
		lda	#<(Squ10)
		sta	TableC
		lda	#0h
		sta	.M_Data_Offset	
		call	.GetTabVal
		ret		
		
.YisPoint5:		
		call	.ClrY
		lda	#05h
		sta	OperandY+6	;Y=Y*0.5	
		lda	#01h
		sta	PointY
		call	.Z_trans_X
		call    Multiplation		
		ret		
.Error:
		lda	#01h
		sta	ErrorFlag
		ret
Squ10::
		DB	000h,00dh,031h,062h,027h,076h,060h,016h,083h,0ffh				       			

⌨️ 快捷键说明

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