📄 cm-941.asm
字号:
OR R_B5
OR R_B6
JNZ StepDiv2
LDS R_Error, 1
RTS
StepDiv2:
CALL ClearW
StepDiv3
LDA R_A6
JNZ StepDiv3_1
INC* R_AP
CALL LeftA
JMP StepDiv3
StepDiv3_1:
LDA R_B6
JNZ StepDiv4
INC* R_BP
CALL LeftB
JMP StepDiv3_1
StepDiv4:
CALL CopyAtoW
LDS R_A0, 0
LDS R_A1, 0AH
LDS R_A2, 0AH
LDS R_A3, 0AH
LDS R_A4, 0AH
LDS R_A5, 0AH
LDS R_A6, 0AH
LDA R_BP
SUB R_AP
JNC StepDiv4_1
STA R_AP
JMP StepDiv5
StepDiv4_1:
LDA R_AP
SUB R_BP
STA R_AP
LDS TempR0, 1000B
OR* R_AP
StepDiv5:
CALL ComWB
JNZ StepDiv8
StepDiv6:
LDA R_A6
JZ StepDiv7
LDS TempR0, 0AH
SUB R_A6
JNZ StepDiv10
StepDiv7:
CALL LeftW
CALL LeftA
LDS Dummy, 1000B
AND R_AP
JNZ StepDiv7_1
INC* R_AP
JMP StepDiv5
StepDiv7_1:
LDA R_AP
STA Dummy
ANDI* Dummy, 0111B
DEC* Dummy
JNZ StepDiv7_2
LDS R_AP, 0
JMP StepDiv5
StepDiv7_2:
ORI* Dummy, 1000B
STA R_AP
JMP StepDiv5
StepDiv8:
CALL WsubB
INC* R_A0
StepDiv9:
JMP StepDiv5
StepDiv10:
CALL CopyAtoW
RTS
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
CopyAtoW:
LDA R_A0
STA R_W0
LDA R_A1
STA R_W1
LDA R_A2
STA R_W2
LDA R_A3
STA R_W3
LDA R_A4
STA R_W4
LDA R_A5
STA R_W5
LDA R_A6
STA R_W6
LDA R_AP
STA R_WP
LDS R_W7, 0
RTS
;;;;;;;;;;;;;;;;;;;;;;;;;;
CopyWtoA:
LDA R_W0
STA R_A0
LDA R_W1
STA R_A1
LDA R_W2
STA R_A2
LDA R_W3
STA R_A3
LDA R_W4
STA R_A4
LDA R_W5
STA R_A5
LDA R_W6
STA R_A6
LDA R_WP
STA R_AP
RTS
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
CopyWtoB:
LDA R_W0
STA R_B0
LDA R_W1
STA R_B1
LDA R_W2
STA R_B2
LDA R_W3
STA R_B3
LDA R_W4
STA R_B4
LDA R_W5
STA R_B5
LDA R_W6
STA R_B6
LDA R_WP
STA R_BP
RTS
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
LeftA:
LDA R_A5
STA R_A6
LDA R_A4
STA R_A5
LDA R_A3
STA R_A4
LDA R_A2
STA R_A3
LDA R_A1
STA R_A2
LDA R_A0
STA R_A1
LDS R_A0, 0
RTS
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
LeftB:
LDA R_B5
STA R_B6
LDA R_B4
STA R_B5
LDA R_B3
STA R_B4
LDA R_B2
STA R_B3
LDA R_B1
STA R_B2
LDA R_B0
STA R_B1
LDS R_B0, 0
RTS
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
LeftW:
LDA R_W6
STA R_W7
LDA R_W5
STA R_W6
LDA R_W4
STA R_W5
LDA R_W3
STA R_W4
LDA R_W2
STA R_W3
LDA R_W1
STA R_W2
LDA R_W0
STA R_W1
LDS R_W0, 0
RTS
;;;;;;;;;;;;;;;;;;;
RightA:
LDA R_A1
STA R_A0
LDA R_A2
STA R_A1
LDA R_A3
STA R_A2
LDA R_A4
STA R_A3
LDA R_A5
STA R_A4
LDA R_A6
STA R_A5
LDS R_A6, 0
RTS
;;;;;;;;;;;;;;;;;;;;;;
RightB:
LDA R_B1
STA R_B0
LDA R_B2
STA R_B1
LDA R_B3
STA R_B2
LDA R_B4
STA R_B3
LDA R_B5
STA R_B4
LDA R_B6
STA R_B5
LDS R_B6, 0
RTS
;;;;;;;;;;;;;;;;;;;;;;;
Right_B:
LDA R_B1
STA R_B0
LDA R_B2
STA R_B1
LDA R_B3
STA R_B2
LDA R_B4
STA R_B3
LDA R_B5
STA R_B4
LDA R_B6
STA R_B5
LDS R_B6, 0AH
RTS
;;;;;;;;;;;;;;;;;;;;;;;;;
RightW:
LDA R_W1
STA R_W0
LDA R_W2
STA R_W1
LDA R_W3
STA R_W2
LDA R_W4
STA R_W3
LDA R_W5
STA R_W4
LDA R_W6
STA R_W5
LDA R_W7
STA R_W6
LDS R_W7, 0
RTS
;;;;;;;;;;;;;;;;;;;;;;;;
ComWB:
LDA R_B0
SUB R_W0
LDA R_B1
SBC R_W1
LDA R_B2
SBC R_W2
LDA R_B3
SBC R_W3
LDA R_B4
SBC R_W4
LDA R_B5
SBC R_W5
LDA R_B6
SBC R_W6
LDS TempR0,0
SBC R_W7
JNC WlessB
WbigB:
LDS TempR0,1
RTS
WlessB:
LDS TempR0,0
RTS
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
WsubB:
LDA R_B0
SUB* R_W0
DAS* R_W0
LDA R_B1
SBC* R_W1
DAS* R_W1
LDA R_B2
SBC* R_W2
DAS* R_W2
LDA R_B3
SBC* R_W3
DAS* R_W3
LDA R_B4
SBC* R_W4
DAS* R_W4
LDA R_B5
SBC* R_W5
DAS* R_W5
LDA R_B6
SBC* R_W6
DAS* R_W6
LDS TempR0,0
SBC* R_W7
DAS* R_W7
JC $+2
LDS R_Error, 1
RTS
;;;;;;;;;;;;;;;;;;;;
WaddA:
LDA R_A0
ADD R_W0
DAA* R_W0
LDA R_A1
ADC* R_W1
DAA* R_W1
LDA R_A2
ADC* R_W2
DAA* R_W2
LDA R_A3
ADC* R_W3
DAA* R_W3
LDA R_A4
ADC* R_W4
DAA* R_W4
LDA R_A5
ADC* R_W5
DAA* R_W5
LDA R_A6
ADC* R_W6
DAA* R_W6
LDS TempR0, 0
ADC* R_W7
RTS
;;;;;;;;;;;;;;;;;;;;;;;;;;;;
WaddB
LDA R_B0
ADD* R_W0
DAA* R_W0
LDA R_B1
ADC* R_W1
DAA* R_W1
LDA R_B2
ADC* R_W2
DAA* R_W2
LDA R_B3
ADC* R_W3
DAA* R_W3
LDA R_B4
ADC* R_W4
DAA* R_W4
LDA R_B5
ADC* R_W5
DAA* R_W5
LDA R_B6
ADC* R_W6
DAA* R_W6
LDS TempR0, 0
ADC* R_W7
RTS
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
ClearW:
LDS R_W0, 0
LDS R_W1, 0
LDS R_W2, 0
LDS R_W3, 0
LDS R_W4, 0
LDS R_W5, 0
LDS R_W6, 0
LDS R_W7, 0
LDS R_WP, 0
RTS
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
Lb_Kg: ;1lb = 0.4536kg
LDA SData1
STA R_A0
LDA SData2
STA R_A1
LDA SData3
STA R_A2
LDA SData4
STA R_A3
LDS R_A4, 0
LDS R_A5, 0
LDS R_A6, 0
LDS R_AP, 1
LDS R_B0, 6
LDS R_B1, 3
LDS R_B2, 5
LDS R_B3, 4
LDS R_B4, 0
LDS R_B5, 0
LDS R_B6, 0
LDS R_BP, 4
CALL F_Mul
LDS TempR0, 0 ;Round off
LDS TempR1, 4
MVU TempR0
MVH TempR1
LDS TempR0, 2
SUB R_WP
STA TempR1
MVL TempR1
LDS TempR0, 5
SUB @HL
JNC Lb_Kg2
Lb_Kg1:
INC* TempR1
MVL TempR1
INC* @HL
DAA* @HL
JC Lb_Kg1
Lb_Kg2:
LDS TempR0, 0
LDS TempR1, 4
MVU TempR0
MVH TempR1
LDS TempR0, 1
SUB R_WP
STA TempR1
MVL TempR1
LDA# @HL
STA SData1
LDA# @HL
STA SData2
LDA# @HL
STA SData3
LDA @HL
STA SData4
RTS
;-----------------------------------------------------
Inch_Cm: ;1inch = 2.54cm
LDA SData3 ;1foot =12 inch
STA R_A0
LDS R_A1, 0
LDS R_A2, 0
LDS R_A3, 0
LDS R_A4, 0
LDS R_A5, 0
LDS R_A6, 0
LDS R_AP, 0
LDS R_B0, 2
LDS R_B1, 1
LDS R_B2, 0
LDS R_B3, 0
LDS R_B4, 0
LDS R_B5, 0
LDS R_B6, 0
LDS R_BP, 0
CALL F_Mul
LDA SData1
STA R_B0
LDA SData2
STA R_B1
LDS R_B2, 0
LDS R_B3, 0
LDS R_B4, 0
LDS R_B5, 0
LDS R_B6, 0
LDS R_BP, 0
CALL F_Add
LDS R_B0, 4
LDS R_B1, 5
LDS R_B2, 2
LDS R_B3, 0
LDS R_B4, 0
LDS R_B5, 0
LDS R_B6, 0
LDS R_BP, 2
CALL F_Mul
;Round off
LDS TempR0, 0
LDS TempR1, 4
MVU TempR0
MVH TempR1
LDS TempR0, 2
SUB R_WP
STA TempR1
MVL TempR1
LDS TempR0, 5
SUB @HL
JNC Inch_Cm2
Inch_Cm1:
INC* TempR1
MVL TempR1
INC* @HL
DAA* @HL
JC Inch_Cm1
Inch_Cm2:
LDS TempR0, 0
LDS TempR1, 4
MVU TempR0
MVH TempR1
LDS TempR0, 1
SUB R_WP
STA TempR1
MVL TempR1
LDA# @HL
STA SData1
LDA# @HL
STA SData2
LDA# @HL
STA SData3
LDA @HL
STA SData4
RTS
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
Kg_Lb: ;1kg = 2.205lb
LDA SData1
STA R_A0
LDA SData2
STA R_A1
LDA SData3
STA R_A2
LDA SData4
STA R_A3
LDS R_A4, 0
LDS R_A5, 0
LDS R_A6, 0
LDS R_AP, 1
LDS R_B0, 5
LDS R_B1, 0
LDS R_B2, 2
LDS R_B3, 2
LDS R_B4, 0
LDS R_B5, 0
LDS R_B6, 0
LDS R_BP, 3
CALL F_Mul
;Round OFF
LDS TempR0, 0
LDS TempR1, 4
MVU TempR0
MVH TempR1
LDS TempR0, 2
SUB R_WP
STA TempR1
MVL TempR1
LDS TempR0, 5
SUB @HL
JNC Kg_Lb2
Kg_Lb1:
INC* TempR1
MVL TempR1
INC* @HL
DAA* @HL
JC Kg_Lb1
Kg_Lb2:
LDS TempR0, 0
LDS TempR1, 4
MVU TempR0
MVH TempR1
LDS TempR0, 1
SUB R_WP
STA TempR1
MVL TempR1
LDA# @HL
STA SData1
LDA# @HL
STA SData2
LDA# @HL
STA SData3
LDA @HL
STA SData4
RTS
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
Cm_Inch: ;1cm = 0.3937inch
LDA SData1
STA R_A0
LDA SData2
STA R_A1
LDA SData3
STA R_A2
LDA SData4
STA R_A3
LDS R_A4, 0
LDS R_A5, 0
LDS R_A6, 0
LDS R_AP, 1
LDS R_B0, 7
LDS R_B1, 3
LDS R_B2, 9
LDS R_B3, 3
LDS R_B4, 0
LDS R_B5, 0
LDS R_B6, 0
LDS R_BP, 4
CALL F_Mul ;inch
LDS R_B0, 2
LDS R_B1, 1
LDS R_B2, 0
LDS R_B3, 0
LDS R_B4, 0
LDS R_B5, 0
LDS R_B6, 0
LDS R_BP, 0
CALL F_Div ;foot
LDS TempR0, 0
LDS TempR1, 3
MVU TempR0
MVH TempR1
MVL R_AP
LDA @HL
STA SData3
LDS TempR0, 0
STA @HL
LDS R_B0, 2
LDS R_B1, 1
LDS R_B2, 0
LDS R_B3, 0
LDS R_B4, 0
LDS R_B5, 0
LDS R_B6, 0
LDS R_BP, 0
CALL F_Mul ;leaved inch
;round off
LDS TempR0, 0
LDS TempR1, 4
MVU TempR0
MVH TempR1
LDS TempR0, 1
SUB R_WP
STA TempR1
MVL TempR1
LDS TempR0, 5
SUB @HL
JNC Cm_Inch2
Cm_Inch1:
INC* TempR1
MVL TempR1
INC* @HL
DAA* @HL
JC Cm_Inch1
Cm_Inch2:
LDS TempR0, 0
LDS TempR1, 4
MVU TempR0
MVH TempR1
MVL R_WP
LDA# @HL
STA SData1
LDA @HL
STA SData2
LDS SData4, 0
RTS
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
F_BMI:
;Height*Height
LDA Height1
STA R_A0
STA R_B0
LDA Height2
STA R_A1
STA R_B1
LDA Height3
STA R_A2
STA R_B2
LDA Height4
STA R_A3
STA R_B3
LDS R_A4, 0
LDS R_B4, 0
LDS R_A5, 0
LDS R_B5, 0
LDS R_A6, 0
LDS R_B6, 0
LDS R_BP, 3
LDS R_AP, 3
CALL F_Mul
CALL CopyWtoB
LDA Weight1
STA R_A0
LDA Weight2
STA R_A1
LDA Weight3
STA R_A2
LDA Weight4
STA R_A3
LDS R_A4, 0
LDS R_A5, 0
LDS R_A6, 0
LDS R_AP, 1
CALL F_Div
LDS TempR0, 0 ;round off
LDS TempR1, 4
MVU TempR0
MVH TempR1
LDS TempR0, 2
SUB R_WP
STA TempR1
MVL TempR1
LDS TempR0, 5
SUB @HL
JNC F_BMI2
F_BMI1:
INC* TempR1
MVL TempR1
INC* @HL
DAA* @HL
JC F_BMI1
F_BMI2:
LDS TempR0, 0
LDS TempR1, 4
MVU TempR0
MVH TempR1
LDS TempR0, 1
SUB R_WP
STA TempR1
MVL TempR1
LDA# @HL
STA BMI1
LDA# @HL
STA BMI2
LDA @HL
STA BMI3
RTS
;;;;;;
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -