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

📄 calculate.asm

📁 利用holtek的HT49R50编写的热敏感应温度计的使用
💻 ASM
字号:
;====================================================================
; 文件名:calculate.ASM
; 日期:2003/11/18   
; ROM使用情况:
; RAM使用情况:
;====================================================================

#define	calculate_asm
include	calculate.inc
include	ht48r50a-1.inc
;====================================================================
;宣告提供给外部程序使用的变量
ifndef bit32
	ifndef bit24
		ifndef bit16
			ifdef bit8
				public	data0,data4,to0,to1
				init	macro
				mov	a, 00h
				mov	to0, a
				mov	to1, a
				mov	[0aH], a
				endm
			endif
		endif
	endif
endif
ifndef bit32
	ifndef bit24
		ifdef bit16
			public	data0,data1,data4,data5
			public	to0,to1,to2,to3
			init	macro
			mov	a, 00h
			mov	to0, a
			mov	to1, a
			mov	to2, a
			mov	to3, a
			mov	[0ah], a
			endm
		endif
	endif
endif
ifndef bit32
	ifdef bit24
		public	data0,data1,data2,data4,data5,data6
		public	to0,to1,to2,to3,to4,to5
		init	macro
		mov	a, 00h
		mov	to0, a
		mov	to1, a
		mov	to2, a
		mov	to3, a
		mov	to4, a
		mov	to5, a
		mov	to6, a
		endm
	endif
endif
ifdef bit32
	public	data0,data1,data2,data3
	public	data4,data5,data6,data7
	public	to0,to1,to2,to3
	public	to4,to5,to6,to7
	init	macro
	mov	a, 00h
	mov	to0, a
	mov	to1, a
	mov	to2, a
	mov	to3, a
	mov	to4, a
	mov	to5, a
	mov	to6, a
	mov	to7, a
	endm
endif
;宣告提供给外部程序使用的子程序  
ifdef bit8
	public	unbin_add_8		
	public	bin_add_8		;
	public	unbin_sub_8		;
	public	bin_sub_8		;
	public	unbin_mul_8		;
	public	bin_mul_8		;
	public	unbin_div_8		;
	public	bin_div_8		;
	public	bcd_add_8		;
	public	bcd_sub_8		;
	public	bintobcd_8		;
	public	bcdtobin_8		;
endif

ifdef bit16
	public	unbin_add_16		
	public	bin_add_16		;
	public	unbin_sub_16		;
	public	bin_sub_16		;
	public	unbin_mul_16		;
	public	bin_mul_16		;
	public	unbin_div_16		;
	public	bin_div_16		;
	public	bcd_add_16		;
	public	bcd_sub_16		;
	public	bintobcd_16		;
	public	bcdtobin_16		;
endif

ifdef bit24
	public	unbin_add_24		
	public	bin_add_24		;
	public	unbin_sub_24		;
	public	bin_sub_24		;
	public	unbin_mul_24		;
	public	bin_mul_24		;
	public	unbin_div_24		;
	public	bin_div_24		;
	public	bcd_add_24		;
	public	bcd_sub_24		;
	public	bintobcd_24		;
	public	bcdtobin_24		;
endif

ifdef bit32
	public	unbin_add_32		
	public	bin_add_32		;
	public	unbin_sub_32		;
	public	bin_sub_32		;
	public	unbin_mul_32		;
	public	bin_mul_32		;
	public	unbin_div_32		;
	public	bin_div_32		;
	public	bcd_add_32		;
	public	bcd_sub_32		;
	public	bintobcd_32		;
	public	bcdtobin_32		;
endif

calculate_data	.section	'data'
ifndef bit32
	ifndef bit24
		ifndef bit16
			ifdef bit8
				data0	db	? 
				data4	db	?  
				to0	db	?
				to1	db	?
				com1	db	?
				com2	db	?  
				com3	db	?
				count0	db	?
			endif
		endif
	endif
endif
ifndef bit32
	ifndef bit24			
		ifdef bit16
			data0	db	?
			data1	db	?
			data4	db	?
			data5	db	?
			to0	db	?
			to1	db	?
			to2	db	?
			to3	db	?
			com1	db	?
			com2	db	?
			com3	db	?
			count0	db	?
			count1	db	?
		endif
	endif
endif
ifndef bit32	
	ifdef bit24
		data0	db	?
		data1	db	?
		data2	db	?
		data4	db	?
		data5	db	?
		data6	db	?
		to0	db	?
		to1	db	?
		to2	db	?
		to3	db	?
		to4	db	?
		to5	db	?
		to6	db	?
		com1	db	?
		com2	db	?
		com3	db	?
		com4	db	?
		count0	db	?
		count1	db	?
	endif
endif	
ifdef bit32
	data0 			   db    ? 
	data1    		   db    ?
	data2  			   db    ?
	data3		       	   db    ?
	data4                      db    ?
	data5                      db    ?
	data6                      db    ?    
	data7	                   db    ?
	to0                        db    ? 
	to1                        db    ? 
	to2                        db    ? 
	to3                        db    ? 
	to4                        db    ? 
	to5                        db    ? 
	to6                        db    ? 
	to7                        db    ?
	com0                       db    ?
	com1	                   db    ?
	com2	                   db    ?  
	com3                       db    ?
	com4                       db    ?
	com5                       db    ?
	count0                     db    ?
	count1	                   db	 ?
	count2	                   db	 ?  
	count3                     db    ?
endif

calculate_code	.section	'code'
;==============================================================================
;8 bit data calculation
;==============================================================================
ifdef	bit8
;8 bit unsigned add
unbin_add_8 proc		;data0+data4---->to1to0	
	init				             
        mov	a, data0        
        add	a, data4
        mov	to0, a
        mov	a, 00h
        adcm	a, to1
	ret
unbin_add_8 endp                 
 
;8 bit signed add
bin_add_8 proc			;data0+data4---->to1to0
	init
	clr	com1
	clr	com2
	sz	data0.7          
	set	com1
	sz	data4.7
	set	com2
	mov	a, data0
	add	a, data4
        mov	to0, a
	mov	a, com1
	adc	a, com2
        mov	to1, a
	ret
bin_add_8 endp

;8 bit unsigned sub
unbin_sub_8 proc		;data0-data4---->to1to0          
	init
	mov	a, data0         
	sub	a, data4
        mov	to0, a
	mov	a, 00h
    	sbcm	a, to1        
	ret
unbin_sub_8 endp

;8 bit signed sub
bin_sub_8 proc			;data0-data4---->to1to0
	init
        clr	com3
	cpl	data4
	mov	a, 01h
	addm	a, data4
        mov	a, 80h		;判断减数是否为80H
        sub	a, data4
        sz	acc
        jmp	begins
        mov	a, 7fh
        mov	data4, a
        inc	com3
begins:
 	call	bin_add_8
 	mov	a, com3
 	addm	a, to0
        mov	a, 00h
        adcm	a, to1
	ret 
bin_sub_8 endp

;8 bit unsigned mul  
unbin_mul_8 proc		;data0*data4---->to1to0 
	init
	mov	a, 08h
	mov	count0, a      
rradd:
	rrc	to1
        rrc	data4
        snz	[0ah].0   
        jmp	rr1		;当前data4.0=0,移位

⌨️ 快捷键说明

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