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

📄 ex.asm

📁 这是用台湾KingB 8位单片机开发的科学计算器程序
💻 ASM
字号:
;|---------------------------------------|
;|Program name : Ex.asm		 	 |
;|Use bady:  				 |
;|Programer: Alton			 |
;|Simple version			 |
;|---------------------------------------|
; 	.area   ex_data(data,rel)
Length          EQU     07h
Length_Z        EQU     Length+Length         
        .area   ex_code(code,rel)
;-------------------------------------------
;		Ex
;-------------------------------------------
Ex::
 	call    ClearBuffer
 	lda     #>SignXn
        sta     .PXPP	
        lda     #<SignXn
        sta     .PXDP
        call    .ClearData

	lda     #>SignT
        sta     .PXPP	
        lda     #<SignT
        sta     .PXDP
        call    .ClearData       
        call	.X_trans_Xn	
        lda     #OperandX
        sta     Addr1        		
        call    CheckData	
        lda     DpCount
        sta     SignTemp
        adda    #0
        brz     Input0       
	call	.ClrY
        lda     SignX
        adda    #0
        brnz     2$
	lda	#>(EX_UP_CHK)	 
	sta	TableC+1
	lda	#<(EX_UP_CHK)
	sta	TableC 		 
	;call	.GetTable
	lda      #0
	sta     .M_Data_Offset 	
	call	.GetTabVal
	call	.Z_trans_Y
        br      3$
2$:
        lda	#>(EX_DOWN_CHK)	 
	sta	TableC+1
	lda	#<(EX_DOWN_CHK)
	sta	TableC 		 
	;call	.GetTable
	lda      #0
	sta     .M_Data_Offset 	
	call	.GetTabVal
	call	.Z_trans_Y
3$:	
        call	 Subtration        
        lda	  SignZ
        adda   	#0
        brnz	   100$        
        lda	  SignXn
        adda  	#0
        brz	  .InputError        
        br	  ExInput0
100$:                        
        call	.Xn_trans_X 
1$:
        call    ClearBuffer
        lda     #0
        sta     SignX
        lda     #10h
        sta     BufferZ
        lda     #Length_Z
        deca
        sta     PointBz
ExLoop:
        lda     SignTemp
        adda    #0
        brz     EndEx
        lda     #BufferXn
        adda    #Length
        deca
        sta     r_dp
        lda     i
        anda    #0fh
        sta     Xn
        lda     #BufferXn
        sta     Addr1
        call    ShiftToR
        lda     PointXn
        deca
        sta     PointXn
        lda     SignTemp
        deca
        sta     SignTemp 
        lda     Xn
        adda    #0
        brz     ExLoop
        
       ; lda     #^ExData
       ; sta     TableC+2
        lda     #@ExData
        sta     TableC+1
        lda     #<ExData
        sta     TableC
        
        lda     PointXn
        adda    #04h
        sta     Temp1
        lda     Xn
        deca
        sta     Xn	 
        call    GetData1
        
        lda     #0
        sta     Temp2
	call	.BZ_trans_X
        call    Multiplation
	call	.Z_trans_BZ	 
        br      ExLoop

EndEx:
        lda     SignXn
        adda    #0
        brz     0$
	call	.ClrX
        lda     #OperandX
        adda    #Length
        deca
        sta     r_dp
        lda     #10h
        sta     i
        lda     #01h
        sta     PointX
	call	.Z_trans_Y
        call    Division
0$:
.EXexit:
        ret
;-------------------------------------------        
Input0:
         
        call	.ClrZ
        lda	#01h
        sta	OperandZ+Length-1
        ret

ExInput0: 
	call	.ClrZ
        ret
.InputError:
	lda	#01h
	sta	ErrorFlag
	br	.EXexit
;-------------------------------------------        
GetData1: 
        lda     Temp1
        deca
        sta     Temp1
        brz     1$         
        cmpe    #0eh
        brnc    0$        
        call	.ClrY
        lda     #Length_Z-1		;;0bh
        sta     PointY
        lda     #10h
        sta     OperandY
        ret
0$:         
        lda     TableC
        adda    #02h
        sta     TableC
        lda     TableC+1
        addc    #0
        sta     TableC+1
        br      GetData1
1$:             
        ;lda     #0
        ;sta     r_tpp
        lda     TableC+1
        sta     r_tph
        lda     TableC
        sta     r_tpl
2$:                     ;;wait rom data read
        ;lda     r_op1
        ;anda    #80h
        ;brz     2$
        ldv
        sta     TableC+1
3$:
        ldv
        sta     TableC

        ;lda     #^ExData
       ; sta     TableC+2
        ;lda	#0h
        ;sta	.M_Data_Offset
 
	
.GetTab:
	lda	#0h		
	sta	.Counter	
	;call	.GetTable
	lda      #0
	sta     .M_Data_Offset 	
	call	.GetTabVal
	call	.Z_trans_R
	;lda	Temp2
	;deca
	;sta	Xn
11$:	
	lda	Xn
	cmpe	#0h			;;;;7/3 cmpe #0
	brz	GetAns
	call	.Z_trans_X
	call	.R_trans_Y
	call    Multiplation
	lda	Xn
	deca
	sta	Xn
	br	11$
GetAns:	
	
	
	call	.Z_trans_Y	
         
        ret    
;-------------------------------------------
ExData:
        DW      Edata
        DW      Edata1
        DW      Edata2
        DW      Edata3
        DW      Edata4
        DW      Edata5
        DW      Edata6
        DW      Edata7
        DW      Edata8
        DW      Edata9
        DW      Edata10
        DW      Edata11
        DW      Edata12
        DW      Edata13

Edata:
;; for 16 dot use
	DB	00h,0e2h,26h,88h,11h,71h,41h,81h,61h,0ffh 		;;,44h,84h		
	 		
		
Edata1:
	
	DB	00h,009h,22h,02h,64h,65h,79h,48h,06h,0ffh  		;;,65h,16h		
	 
Edata2:
 	DB	00h,00dh,27h,18h,28h,18h,28h,45h,90h,0ffh		;;,23h,53h		
 	 		

Edata3:
	DB	00h,0dh,11h,05h,17h,09h,18h,07h,56h,0ffh		;;,62h,48h		
	 	

Edata4:
	DB	00h,0dh,10h,10h,05h,01h,67h,08h,41h,0ffh 		;;,05h,75h		
	 	
		
Edata5:
	DB	00h,0dh,10h,01h,00h,05h,00h,16h,67h,0ffh 		;;,34h,16h		
	 	

Edata6:
	DB	00h,0dh,10h,00h,10h,00h,05h,00h,01h,0ffh 		;;,67h,08h		
	 
Edata7:
	
	DB	00h,0dh,10h,00h,01h,00h,00h,05h,00h,0ffh		;;,16h,66h		
	 	
	
Edata8:

	DB	00h,0dh,10h,00h,00h,10h,00h,00h,05h,0ffh		;;,00h,01h		
	 	
	
Edata9:

	DB	00h,0dh,10h,00h,00h,01h,00h,00h,00h,0ffh		;;,00h,00h		
	 	
	
Edata10:

	DB	00h,0dh,10h,00h,00h,00h,10h,00h,00h,0ffh		;;,05h,00h
	 		
	
Edata11:

	DB	00h,0dh,10h,00h,00h,00h,01h,00h,00h,0ffh		;;,00h,05h		
	 
	
Edata12:

	DB	00h,0dh,10h,00h,00h,00h,00h,10h,00h,0ffh		;;,00h,00h
	 	
Edata13:
	DB	00h,0dh,10h,00h,00h,00h,00h,01h,00h,0ffh		;;,00h,00h
	 
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
EX_UP_CHK:
	DB      00h,007h,00h,00h,23h,02h,58h,50h,93h,0ffh	
EX_DOWN_CHK:
	DB      00h,003h,00h,00h,00h,00h,22h,79h,60h,0ffh
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;	     

⌨️ 快捷键说明

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