📄 math.inc
字号:
;之一:
/************************************************************************************/
/* 程序名称: 1字节乘1字节子程序
/* 引用名称: _math_m_11
/* 描 述: 适用于EM78P153/156/447/451/458/468
/************************************************
/* 作 者: bandy
/* 日 期: 2007年8月17日
/****************************************************/
public _math_m_11
/****************************************************/
/**************寄存器定义****************************/
/****************************************************/
;入口:
math_m_11_r0 == 0x10 ;被乘数
;
math_m_11_r1 == 0x11 ;乘数
;出口:
math_m_11_r2 == 0x12 ;高位乘积
math_m_11_r3 == 0x13 ;低位乘积
;出错标志: psw.c=1
;正常标志: psw.c=0
;--------------------------------------------------
;内部使用寄存器
math_m_11_cr == 0x14 ;计数
/***************************************************/
/*************寄存器定义结束************************/
/***************************************************/
_math_m_11:
mov a,@8
mov math_m_11_cr,a
clr math_m_11_r2
clr math_m_11_r3
_math_m_11_a0:
mov a,math_m_11_r0
rrc math_m_11_r1
jbc 3,0
add math_m_11_r2,a
rrc math_m_11_r2
rrc math_m_11_r3
djz math_m_11_cr
jmp _math_m_11_a0
ret
;==============================================
;之二:
/************************************************************************************/
/* 程序名称: 2字节乘1字节子程序
/* 引用名称: _math_m_21
/* 描 述: 适用于EM78P153/156/447/451/458/468
/************************************************
/* 作 者: bandy
/* 日 期: 2007年8月18日
/****************************************************/
public _math_m_21
/****************************************************/
/**************寄存器定义****************************/
/****************************************************/
;入口:
math_m_21_r0 == 0x10 ; 高位被乘数
math_m_21_r1 == 0x11 ; 低位被乘数
;
math_m_21_r2 == 0x12 ; 乘数
;出口:
math_m_21_r3 == 0x13 ; 高位乘积
math_m_21_r4 == 0x14 ; 中位乘积
math_m_21_r5 == 0x15 ; 低位乘积
;出错标志: psw.c=1
;正常标志: psw.c=0
;--------------------------------------------------
;内部使用寄存器
math_m_21_cr == 0x1a ;计数
/***************************************************/
/*************寄存器定义结束************************/
/***************************************************/
_math_m_21:
mov a,@8
mov math_m_21_cr,a
clr math_m_21_r3
clr math_m_21_r4
clr math_m_21_r5
_math_m_21_a0:
rrc math_m_21_r2
jbs 3,0
jmp _math_m_21_a2
mov a,math_m_21_r1
add math_m_21_r4,a
mov a,@1
jbc 3,0
add math_m_21_r3,a
jbc 3,0
jmp _math_m_21_a1
mov a,math_m_21_r0
add math_m_21_r3,a
jmp _math_m_21_a2
_math_m_21_a1:
mov a,math_m_21_r0
mov math_m_21_r3,a
_math_m_21_a2:
rrc math_m_21_r3
rrc math_m_21_r4
rrc math_m_21_r5
djz math_m_21_cr
jmp _math_m_21_a0
ret
;==============================================
;之三:
/************************************************************************************/
/* 程序名称: 3字节乘2字节子程序
/* 引用名称: _math_m_32
/* 描 述: 适用于EM78P153/156/447/451/458/468
/************************************************
/* 作 者: bandy
/* 日 期: 2007年8月17日
/****************************************************/
public _math_m_32
/****************************************************/
/**************寄存器定义****************************/
/****************************************************/
;入口:
math_m_32_r0 == 0x10 ; 高位被乘数
math_m_32_r1 == 0x11 ; 低位被乘数
math_m_32_r2 == 0x12 ;最低位被乘数
;
math_m_32_r3 == 0x13 ; 乘数高位
math_m_32_r4 == 0x14 ; 乘数低位
;出口:
math_m_32_r5 == 0x15 ;最高位乘积
math_m_32_r6 == 0x16 ; 高位乘积
math_m_32_r7 == 0x17 ; 中位乘积
math_m_32_r8 == 0x18 ; 低位乘积
math_m_32_r9 == 0x19 ;最低位乘积
;出错标志: psw.c=1
;正常标志: psw.c=0
;--------------------------------------------------
;内部使用寄存器
math_m_32_cr == 0x1a ;计数
/***************************************************/
/*************寄存器定义结束************************/
/***************************************************/
_math_m_32:
mov a,@16
mov math_m_32_cr,a
clr math_m_32_r5
clr math_m_32_r6
clr math_m_32_r7
clr math_m_32_r8
clr math_m_32_r9
_math_m_32_a0:
rrc math_m_32_r3
rrc math_m_32_r4
jbs 3,0
jmp _math_m_32_a3
mov a,math_m_32_r2
add math_m_32_r7,a
mov a,@1
jbc 3,0
add math_m_32_r6,a
jbc 3,0
add math_m_32_r5,a
jbc 3,0
jmp _math_m_32_a1
mov a,math_m_32_r1
add math_m_32_r6,a
mov a,@1
jbc 3,0
add math_m_32_r5,a
jbc 3,0
jmp _math_m_32_a2
mov a,math_m_32_r0
add math_m_32_r5,a
jmp _math_m_32_a3
_math_m_32_a1:
mov a,math_m_32_r1
mov math_m_32_r6,a
_math_m_32_a2:
mov a,math_m_32_r0
mov math_m_32_r5,a
_math_m_32_a3:
rrc math_m_32_r5
rrc math_m_32_r6
rrc math_m_32_r7
rrc math_m_32_r8
rrc math_m_32_r9
djz math_m_32_cr
jmp _math_m_32_a0
ret
;==============================================
;之四:
/************************************************************************************/
/* 程序名称: 1字节除1字节子程序
/* 引用名称: _math_d_11
/* 描 述: 适用于EM78P153/156/447/451/458/468
/************************************************
/* 作 者: bandy
/* 日 期: 2007年8月17日
/****************************************************/
public _math_d_11
/****************************************************/
/**************寄存器定义****************************/
/****************************************************/
;入口:
math_d_11_r0==0x10 ;被除数;商
math_d_11_r1==0x11 ;除数
;出口:
math_d_11_r2==0x12 ;扩展;余
;出错标志: psw.c=1
;正常标志: psw.c=0
;--------------------------------------------------
;内部使用寄存器
math_d_11_cr==0x13 ;计数
/***************************************************/
/*************寄存器定义结束************************/
/***************************************************/
_math_d_11:
mov math_d_11_r1,math_d_11_r1
jbc 3,2
jmp _math_d_11_a2
mov a,@8
mov math_d_11_cr, a
clr math_d_11_r2
_math_d_11_a0:
bc 3,0
rlc math_d_11_r0
rlc math_d_11_r2
mov a,math_d_11_r1
sub a,math_d_11_r2
jbs 3,0
jmp _math_d_11_a1
mov math_d_11_r2, a
inc math_d_11_r0
_math_d_11_a1:
djz math_d_11_cr
jmp _math_d_11_a0
; bc 3,0 ;四舍五入
; rrca math_d_11_r1
; sub a,math_d_11_r2
; jbc 3,0
; inc math_d_11_r0
_math_d_11_a2:
ret
;之五:
/************************************************************************************/
/* 程序名称: 2字节除2字节子程序
/* 引用名称: _math_d_22
/* 描 述: 适用于EM78P153/156/447/451/458/468
/************************************************
/* 作 者: bandy
/* 日 期: 2007年8月18日
/****************************************************/
public _math_d_22
/****************************************************/
/**************寄存器定义****************************/
/****************************************************/
;入口:
math_d_22_r0==0x10 ;被除数高位;商高位
math_d_22_r1==0x11 ;被除数低位;商低位
math_d_22_r2==0x12 ;除数高位
math_d_22_r3==0x13 ;除数低位
;出口:
math_d_22_r4==0x14 ;扩展高位;余高位
math_d_22_r5==0x15 ;扩展低位;余低位
;出错标志: psw.c=1
;正常标志: psw.c=0
;--------------------------------------------------
;内部使用寄存器
math_d_22_cr==0x1a ;计数
/***************************************************/
/*************寄存器定义结束************************/
/***************************************************/
_math_d_22:
mov math_d_22_r2,math_d_22_r2
jbs 3,2
jmp _math_d_22_a0
mov math_d_22_r3,math_d_22_r3
jbs 3,2
jmp _math_d_22_a0
jmp _math_d_22_a5
_math_d_22_a0:
mov a,@16
mov math_d_22_cr,a
clr math_d_22_r4
clr math_d_22_r5
_math_d_22_a1:
bc 3,0
rlc math_d_22_r1
rlc math_d_22_r0
rlc math_d_22_r5
rlc math_d_22_r4
mov a,math_d_22_r3
sub a,math_d_22_r5
jbs 3,0
bs math_d_22_cr,7
mov a,math_d_22_r2
sub a,math_d_22_r4
jbs 3,0
jmp _math_d_22_a4
jbs 3,2
jmp _math_d_22_a2
jbc math_d_22_cr,7
jmp _math_d_22_a4
jmp _math_d_22_a3
_math_d_22_a2:
add a,@0xff
_math_d_22_a3:
mov math_d_22_r4,a
mov a,math_d_22_r3
sub math_d_22_r5,a
inc math_d_22_r1
; jbc 3,2
; inc math_d_22_r0
_math_d_22_a4:
bc math_d_22_cr,7
djz math_d_22_cr
jmp _math_d_22_a1
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -