📄 calculate.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 + -