📄 math.inc
字号:
_math_d_22_a5:
ret
;之六:
/************************************************************************************/
/* 程序名称: 3字节除3字节子程序
/* 引用名称: _math_d_33
/* 描 述: 适用于EM78P153/156/447/451/458/468
/************************************************
/* 作 者: bandy
/* 日 期: 2007年8月18日
/****************************************************/
public _math_d_33
/****************************************************/
/**************寄存器定义****************************/
/****************************************************/
;入口:
math_d_33_r0==0x10 ;被除数高位;商高位
math_d_33_r1==0x11 ;被除数中位;商中位
math_d_33_r2==0x12 ;被除数低位;商低位
math_d_33_r3==0x13 ;除数高位
math_d_33_r4==0x14 ;除数中位
math_d_33_r5==0x15 ;除数低位
;出口:
math_d_33_r6==0x16 ;扩展高位;余高位
math_d_33_r7==0x17 ;扩展中位;余中位
math_d_33_r8==0x18 ;扩展低位;余低位
;出错标志: psw.c=1
;正常标志: psw.c=0
;--------------------------------------------------
;内部使用寄存器
math_d_33_cr==0x1a ;计数
/***************************************************/
/*************寄存器定义结束************************/
/***************************************************/
_math_d_33:
mov math_d_33_r3,math_d_33_r3
jbs 3,2
jmp _math_d_33_a0
mov math_d_33_r4,math_d_33_r4
jbs 3,2
jmp _math_d_33_a0
mov math_d_33_r5,math_d_33_r5
jbs 3,2
jmp _math_d_33_a0
jmp _math_d_33_a6
_math_d_33_a0:
mov a,@24
mov math_d_33_cr,a
clr math_d_33_r6
clr math_d_33_r7
clr math_d_33_r8
_math_d_33_a1:
bc 3,0
rlc math_d_33_r2
rlc math_d_33_r1
rlc math_d_33_r0
rlc math_d_33_r8
rlc math_d_33_r7
rlc math_d_33_r6
mov a,math_d_33_r3
sub a,math_d_33_r6
jbs 3,2
jmp _math_d_33_a2
mov a,math_d_33_r4
sub a,math_d_33_r7
jbs 3,2
jmp _math_d_33_a2
mov a,math_d_33_r5
sub a,math_d_33_r8
_math_d_33_a2:
jbs 3,0
jmp _math_d_33_a4
mov a,math_d_33_r5
sub math_d_33_r8,a
mov a,@0
jbs 3,0
mov a,@1
add a,math_d_33_r4
jbc 3,0
jmp _math_d_33_a3
sub math_d_33_r7,a
mov a,@0
jbs 3,0
_math_d_33_a3:
mov a,@1
add a,math_d_33_r3
sub math_d_33_r6,a
inc math_d_33_r2
; jbc 3,2
; inc math_d_33_r1
; jbc 3,2
; inc math_d_33_r0
_math_d_33_a4:
djz math_d_33_cr
jmp _math_d_33_a1
bc 3,0 ;四舍五入
rlc math_d_33_r8
rlc math_d_33_r7
rlc math_d_33_r6
mov a,math_d_33_r3
sub a,math_d_33_r6
jbs 3,2
jmp _math_d_33_a5
mov a,math_d_33_r4
sub a,math_d_33_r7
jbs 3,2
jmp _math_d_33_a5
mov a,math_d_33_r5
sub a,math_d_33_r8
_math_d_33_a5:
jbs 3,0
jmp _math_d_33_a6
inc math_d_33_r2
jbc 3,2
inc math_d_33_r1
jbc 3,2
inc math_d_33_r0
_math_d_33_a6:
ret
;之九:
/************************************************************************************/
/* 程序名称: 1字节十六进制转换BCD子程序
/* 引用名称: _math_bcd_1
/* 描 述: 适用于EM78P153/156/447/451/458/468
/************************************************
/* 作 者: bandy
/* 日 期: 2007年8月18日
/****************************************************/
public _math_bcd_1
/****************************************************/
/**************寄存器定义****************************/
/****************************************************/
;入口:
math_bcd_1_r0==0x10 ;十六进制
;出口:
math_bcd_1_r1==0x11 ;BCD高位
math_bcd_1_r2==0x12 ;BCD低位
;出错标志: psw.c=1
;正常标志: psw.c=0
;--------------------------------------------------
;内部使用寄存器
math_bcd_1_cr==0x1a ;计数
/***************************************************/
/*************寄存器定义结束************************/
/***************************************************/
_math_bcd_1:
mov a,@8
mov math_bcd_1_cr,a
clr math_bcd_1_r1
clr math_bcd_1_r2
_math_bcd_1_a0:
rlc math_bcd_1_r0
mov a,@0
jbc 3,0
mov a,@1
add a,math_bcd_1_r2
add a,math_bcd_1_r2
daa
mov math_bcd_1_r2,a
mov a,@0
jbc 3,0
mov a,@1
add a,math_bcd_1_r1
add a,math_bcd_1_r1
daa
mov math_bcd_1_r1,a
djz math_bcd_1_cr
jmp _math_bcd_1_a0
ret
;之十:
/************************************************************************************/
/* 程序名称: 2字节十六进制转换BCD子程序
/* 引用名称: _math_bcd_2
/* 描 述: 适用于EM78P153/156/447/451/458/468
/************************************************
/* 作 者: bandy
/* 日 期: 2007年8月18日
/****************************************************/
public _math_bcd_2
/****************************************************/
/**************寄存器定义****************************/
/****************************************************/
;入口:
math_bcd_2_r0==0x10 ;十六进制高位
math_bcd_2_r1==0x11 ;十六进制低位
;出口:
math_bcd_2_r2==0x12 ;BCD高位
math_bcd_2_r3==0x13 ;BCD中位
math_bcd_2_r4==0x14 ;BCD低位
;出错标志: psw.c=1
;正常标志: psw.c=0
;--------------------------------------------------
;内部使用寄存器
math_bcd_2_cr==0x1a ;计数
/***************************************************/
/*************寄存器定义结束************************/
/***************************************************/
_math_bcd_2:
mov a,@16
mov math_bcd_2_cr,a
clr math_bcd_2_r2
clr math_bcd_2_r3
clr math_bcd_2_r4
_math_bcd_2_a0:
rlc math_bcd_2_r1
rlc math_bcd_2_r0
mov a,@0
jbc 3,0
mov a,@1
add a,math_bcd_2_r4
add a,math_bcd_2_r4
daa
mov math_bcd_2_r4,a
mov a,@0
jbc 3,0
mov a,@1
add a,math_bcd_2_r3
add a,math_bcd_2_r3
daa
mov math_bcd_2_r3,a
mov a,@0
jbc 3,0
mov a,@1
add a,math_bcd_2_r2
add a,math_bcd_2_r2
daa
mov math_bcd_2_r2,a
djz math_bcd_2_cr
jmp _math_bcd_2_a0
ret
;之十一:
/************************************************************************************/
/* 程序名称: 3字节十六进制转换BCD子程序
/* 引用名称: _math_bcd_3
/* 描 述: 适用于EM78P153/156/447/451/458/468
/************************************************
/* 作 者: bandy
/* 日 期: 2007年8月18日
/****************************************************/
public _math_bcd_3
/****************************************************/
/**************寄存器定义****************************/
/****************************************************/
;入口:
math_bcd_3_r0==0x10 ;十六进制高位
math_bcd_3_r1==0x11 ;十六进制中位
math_bcd_3_r2==0x12 ;十六进制低位
;出口:
math_bcd_3_r3==0x13 ;BCD高位
math_bcd_3_r4==0x14 ;BCD中位
math_bcd_3_r5==0x15 ;BCD低位
math_bcd_3_r6==0x16 ;BCD最低位
;出错标志: psw.c=1
;正常标志: psw.c=0
;--------------------------------------------------
;内部使用寄存器
math_bcd_3_cr==0x1a ;计数
/***************************************************/
/*************寄存器定义结束************************/
/***************************************************/
_math_bcd_3:
mov a,@24
mov math_bcd_3_cr,a
clr math_bcd_3_r3
clr math_bcd_3_r4
clr math_bcd_3_r5
clr math_bcd_3_r6
_math_bcd_3_a0:
rlc math_bcd_3_r2
rlc math_bcd_3_r1
rlc math_bcd_3_r0
mov a,@0
jbc 3,0
mov a,@1
add a,math_bcd_3_r6
add a,math_bcd_3_r6
daa
mov math_bcd_3_r6,a
mov a,@0
jbc 3,0
mov a,@1
add a,math_bcd_3_r5
add a,math_bcd_3_r5
daa
mov math_bcd_3_r5,a
mov a,@0
jbc 3,0
mov a,@1
add a,math_bcd_3_r4
add a,math_bcd_3_r4
daa
mov math_bcd_3_r4,a
mov a,@0
jbc 3,0
mov a,@1
add a,math_bcd_3_r3
add a,math_bcd_3_r3
daa
mov math_bcd_3_r3,a
djz math_bcd_3_cr
jmp _math_bcd_3_a0
ret
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -