?? math.asm
字號:
;;file name: math file
;;this files contains math files
;;**************************************************************************
#include ht45rm03.inc ;;if mcu body changed, it is must update
;;**************************************************************************
mathdata. section 'data'
data0 db ?
data1 db ?
data2 db ?
data3 db ?
result0 db ?
result1 db ?
result2 db ?
count db ?
mathtmp0 db ?
mathtmp1 db ?
mathtmp2 db ?
;;**************************************************************************
mathcode. section 'code'
;;unsigned 8 bits mul unsigned 8 bits
;;data0*data1=result1result0
;;input variable: data0,data1
;;output variable: result1result0
SBR_Unsigned8Mul8:
clr result0
clr result1
clr mathtmp0
mov a,8
mov count,a
L_Unsigned8Mul8Loop:
rrc data1
snz c
jmp L_Unsigned8Mul8Shift
mov a,data0
addm a,result0
mov a,mathtmp0
adcm a,result1
L_Unsigned8Mul8Shift:
clr c
rlc data0
rlc mathtmp0
sdz count
jmp L_Unsigned8Mul8Loop
ret
;;**************************************************************************
;;unsigned 8 bits div unsigned 8 bits
;;data0/data1 = result0
;;input variable: data0,data1
;;output variable: result0
SBR_Unsigned8Div8:
clr data0
clr mathtmp0
mov a,08h
mov count,a
sz data1
jmp L_Unsigned8Div8Loop
jmp L_Unsigned8Div8Over
L_Unsigned8Div8Loop:
rlc result0
clr c
rlc data0
rlc mathtmp0
mov a,mathtmp0
sub a,data1
snz c
jmp L_CheckUnsigned8Div8End
mov mathtmp0,a
set result0.0
L_CheckUnsigned8Div8End:
sdz count
jmp L_Unsigned8Div8Loop
L_Unsigned8Div8Over:
ret
;;**************************************************************************
;;unsigned 16 bits div unsigned 8 bits
;;data2data1/data0=result1result0
;;input variable: data2data1,data0
;;output variable: result1result0
SBR_Unsigned16Div8:
clr result1
clr result0
clr mathtmp0
clr mathtmp1
clr data3
mov a,16
mov count,a
sz data0
jmp L_Unsigned16Div8Loop
jmp L_Unsigned16Div8Over
L_Unsigned16Div8Loop:
clr c
rlc result0
rlc result1
clr c
rlc data1
rlc data2
rlc mathtmp0
rlc mathtmp1
mov a,mathtmp0
sub a,data0
mov mathtmp2,a
mov a,mathtmp1
sbc a,data3
snz c
jmp L_CheckUnsigned16Div8End
set result0.0
mov mathtmp1,a
mov a,mathtmp2
mov mathtmp0,a
L_CheckUnsigned16Div8End:
sdz count
jmp L_Unsigned16Div8Loop
L_Unsigned16Div8Over:
ret
;;**************************************************************************
;;unsigned 16 bits mul unsigned 8 bits
;;data2data1*data0=result2result1result0
SBR_Unsigned16Mul8:
clr result2
clr result1
clr result0
clr mathtmp0
mov a,8
mov count,a
L_Unsigned16Mul8Loop:
rrc data0
snz c
jmp L_Unsigned16Mul8Shift
mov a,data1
addm a,result0
mov a,data2
adcm a,result1
mov a,mathtmp0
adcm a,result2
L_Unsigned16Mul8Shift:
clr c
rlc data1
rlc data2
rlc mathtmp0
sdz count
jmp L_Unsigned16Mul8Loop
ret
;;**************************************************************************
public data0
public data1
public data2
public data3
public result0
public result1
public result2
public SBR_Unsigned8Mul8
public SBR_Unsigned8Div8
public SBR_Unsigned16Div8
public SBR_Unsigned16Mul8
end
?? 快捷鍵說明
復制代碼
Ctrl + C
搜索代碼
Ctrl + F
全屏模式
F11
切換主題
Ctrl + Shift + D
顯示快捷鍵
?
增大字號
Ctrl + =
減小字號
Ctrl + -