📄 cal.asm
字号:
; ;;=================================================================
; ;;a*b
; ;;INPUT: A_Cal_H/A_Cal_M/A_Cal_L
; ;; B_Cal_H/B_Cal_M/B_Cal_L
; ;
; ;;OUTPUT B_Cal_H/B_Cal_M/B_Cal_L/.../A_Cal_H/A_Cal_M/A_Cal_L
; ;;=================================================================
; ;L_Cal_MUL3x3:
; ; MOV A,24
; ; MOV Mul_Count,A
; ;
; ; CLR C_Cal_L
; ; CLR C_Cal_M
; ; CLR C_Cal_H
; ; CLR C
; ;
; ;L_MUL4_LP1:
; ; RRC C_Cal_H
; ; RRC C_Cal_M
; ; RRC C_Cal_L
; ;
; ; RRC A_Cal_H
; ; RRC A_Cal_M
; ; RRC A_Cal_L
; ;
; ; SNZ C
; ; JMP L_Skip_ADD_RESULT
; ;
; ;;=================================================================
; ;L_TO_ADD_RESULT:
; ; MOV A,B_Cal_L
; ; ADDm A,C_Cal_L
; ;
; ; MOV A,B_Cal_M
; ; ADCM A,C_Cal_M
; ;
; ; MOV A,B_Cal_H
; ; ADCM A,C_Cal_H
; ;;=================================================================
; ;
; ;L_Skip_ADD_RESULT:
; ; SDZ Mul_Count
; ; JMP L_MUL4_LP1
; ;
; ;
; ; RRC C_Cal_H
; ; RRC C_Cal_M
; ; RRC C_Cal_L
; ;
; ; RRC A_Cal_H
; ; RRC A_Cal_M
; ; RRC A_Cal_L
; ;
; ; MOV A,C_Cal_L ;C to B
; ; MOV B_Cal_L,A
; ; MOV A,C_Cal_M
; ; MOV B_Cal_M,A
; ; MOV A,C_Cal_H
; ; MOV B_Cal_H,A
; ; RET
; ;;=================================================================
;=================================================================
;a*b
;INPUT: A_Cal_M/A_Cal_L
; B_Cal_M/B_Cal_L
;OUTPUT B_Cal_M/B_Cal_L/A_Cal_M/A_Cal_L
;=================================================================
L_Cal_MUL2x2:
MOV A,16
MOV Mul_Count,A
CLR C_Cal_L
CLR C_Cal_M
CLR C
L_MUL4_LP1:
RRC C_Cal_M
RRC C_Cal_L
RRC A_Cal_M
RRC A_Cal_L
SNZ C
JMP L_Skip_ADD_RESULT
;=================================================================
L_TO_ADD_RESULT:
MOV A,B_Cal_L
ADDm A,C_Cal_L
MOV A,B_Cal_M
ADCM A,C_Cal_M
;=================================================================
L_Skip_ADD_RESULT:
SDZ Mul_Count
JMP L_MUL4_LP1
RRC C_Cal_M
RRC C_Cal_L
RRC A_Cal_M
RRC A_Cal_L
MOV A,C_Cal_L ;C to B
MOV B_Cal_L,A
MOV A,C_Cal_M
MOV B_Cal_M,A
RET
;=================================================================
;=================================================================
; IN: A_Cal_3,A_Cal_2,A_Cal_1,A_Cal_0
; B_Cal_1,B_Cal_0
;
;OUT: shang -- A_Cal_1(high 8BIT),A_Cal_0(low 8BIT)
; yu shu-- DIV_BUF_H,DIV_BUF_L
;
;BUFFER: DIV_BUF_H ,DIV_BUF_L ,Div_Count
; DIV_TEMP_H ,DIV_TEMP_L
;=================================================================
L_Cal_DIV3d2:
MOV A,24; 32
MOV Div_Count,A
CLR DIV_BUF_H
CLR DIV_BUF_L
DIV4_LP:
;--------------------------------------------------
;--------------------------------------------------
CLR C
RLC A_Cal_0
RLC A_Cal_1
RLC A_Cal_2
RLC DIV_BUF_L
RLC DIV_BUF_H
;--------------------------------------------------
;--------------------------------------------------
MOV A,DIV_BUF_L
SUB A,B_Cal_0
MOV DIV_TEMP_L,A
MOV A,DIV_BUF_H
SBC A,B_Cal_1
MOV DIV_TEMP_H,A
SNZ C
JMP GO_ON_DO
MOV A,DIV_TEMP_L
MOV DIV_BUF_L,A
MOV A,DIV_TEMP_H
MOV DIV_BUF_H,A
INC A_Cal_0
GO_ON_DO:
SDZ Div_Count
JMP DIV4_LP
RET
;==================================================
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -