mul.asm
来自「--- ----initial------- MOVLA 00H IOD」· 汇编 代码 · 共 391 行
ASM
391 行
; 乘法器 --> 四位二进制相乘
;
;应先初始化状态寄存器
tx1714 EQU 7FFH
PA EQU 05H
PB EQU 06H
PC EQU 07H
PD EQU 20H
IAR EQU 00H ;间接寻址寄存器
TMR0 EQU 01H ;定时器
STATUS EQU 03H ;状态寄存器
BSR EQU 04H ;bank选择寄存器
PORTA EQU 05H ;I/0端口寄存器
PORTB EQU 06H ;I/0端口寄存器
PORTC EQU 07H ;I/0端口寄存器
PORTD EQU 20H ;I/0端口寄存器
PULL EQU 21H ;PULL-High上拉寄存器
WAKEUP EQU 22H ;唤醒控制寄存器--被用来设定watchdog允许和禁止
IRQM EQU 23H ;中断屏蔽寄存器
IRQF EQU 24H ;中断标志寄存器
WDTSEL EQU 25H
TMR1_CON1 EQU 26H ;TMR1控制寄存器
TMR1_CON2 EQU 27H ;TMR1_con2控制寄存器
TMR2_CON EQU 40H ;TMR2控制寄存器
CP_VR EQU 41H ;里置参考电源
CP_OUT EQU 42H ;比较器设置
TMR1_T EQU 43H ;TMR1重装寄存器
TMR2_T EQU 44H ;TMR2重装寄存器
TMR1 EQU 45H
TMR2 EQU 46H
ORG tx1714
GOTO main
ORG 7FEH
ORG 000H
main
;----------initial-------
MOVLA 00H
IODIR PA
IODIR PB
IODIR PC
MOVAM PA
MOVAM BSR
MOVAM STATUS
MOVAM TMR0
MOVAM TMR1
MOVAM TMR2
;-------end initial-----
;-------------乘法运算------------
;
; 乘数->10H 被乘数->11h
; 结果(积)->12H
; 14H 15H 16H 17H(中间运算)
;---------------------------------
MOVLA 05H ;乘数
MOVAM 10H
MOVAM PB
MOVLA 0aH ;被乘数
MOVAM 11H
MOVAM PC
;--------------------------------
MOVLA 0FH
ANDAM 10H,1
ANDAM 11H,1
;-------------------------
BTMSC 11H,0 ;等于0则跳转
GOTO K1
CLRA
MOVAM 14H
M1
BTMSC 11H,1
GOTO K2
CLRA
MOVAM 15H
M2
BTMSC 11H,2
GOTO K3
CLRA
MOVAM 16H
M3
BTMSC 11H,3
GOTO K4
CLRA
MOVAM 17H
;--------------------------
M4
BTMSS 14H,0 ;等于1则跳转
GOTO L1
BSM 12H,0
N1
BSM STATUS,0
BTMSC 14H,1
RLM 18H,1
BTMSC 15H,0
RLM 18H,1
;下面根据18H判断有没有1有几个1,即18H的内容的1在哪个位置
BTMSC 18H,0
GOTO N2B
BTMSC 18H,1
GOTO N2
BCM 12H,1
GOTO L2
N2B
BSM 12H,1
GOTO L2
N2
BCM 12H,1
L2
BSM STATUS,0
BTMSC 14H,2
RLM 19H,1
BTMSC 15H,1
RLM 19H,1
BTMSC 16H,0
RLM 19H,1
RRM 18H,1
BTMSC STATUS,0
GOTO L3
RRM 18H,1
BTMSC STATUS,0
GOTO L4
;下面根据19H判断有没有1有几个1,即19H的内容的1在哪个位置
;19H.0=1;说明有一个1
;19H.1=1;说明有两个1
;19H.2=1;说明有三个1
;19H.3=1;说明有四个1
;19H.4=1;说明有五个1
;19H.5=1;说明有六个1
N3
BTMSC 19H,0
GOTO L5
BTMSC 19H,1
GOTO L6
BTMSC 19H,2
GOTO L7
BTMSC 19H,3
GOTO L8
BCM 12H,2
BSM STATUS,0
N4
BTMSC 14H,3
RLM 1AH,1
BTMSC 15H,2
RLM 1AH,1
BTMSC 16H,1
RLM 1AH,1
BTMSC 17H,0
RLM 1AH,1
BTMSC 1AH,0
GOTO L9
BTMSC 1AH,1
GOTO L10
BTMSC 1AH,2
GOTO L11
BTMSC 1AH,3
GOTO L12
BTMSC 1AH,4
GOTO L13
BTMSC 1AH,5
GOTO L14
BCM 12H,3
BSM STATUS,0
N5
BTMSC 15H,3
RLM 1BH,1
BTMSC 16H,2
RLM 1BH,1
BTMSC 17H,1
RLM 1BH,1
;N6
BTMSC 1BH,0
GOTO L15
BTMSC 1BH,1
GOTO L16
BTMSC 1BH,2
GOTO L17
BTMSC 1BH,3
GOTO L18
BTMSC 1BH,4
GOTO L19
BTMSC 1BH,5
GOTO L20
BCM 12H,4
BSM STATUS,0
N7
BTMSC 16H,3
RLM 1CH,1
BTMSC 17H,2
RLM 1CH,1
BTMSC 1CH,0
GOTO L21
BTMSC 1CH,1
GOTO L22
BTMSC 1CH,2
GOTO L23
BTMSC 1CH,3
GOTO L24
BTMSC 1CH,4
GOTO L25
BCM 12H,5
BSM STATUS,0
N8
BTMSC 17H,3
RLM 1DH,1
BTMSC 1DH,0
GOTO L26
BTMSC 1DH,1
GOTO L27
BTMSC 1DH,2
GOTO L28
BCM 12H,6
BSM STATUS,0
N9
BTMSC 1EH,0
GOTO L29
BCM 12H,7
;=====================================
N10
MOVM 12H,0
MOVAM PA ;输出结果
GOTO LOOP
;=====================================
L29
BSM 12H,7
GOTO N10
L26
BSM 12H,6
BSM STATUS,0
GOTO N9
L27
BCM 12H,6
BSM STATUS,0
RLM 1EH,1
GOTO N9
L28
BSM 12H,6
BSM STATUS,0
RLM 1EH,1
GOTO N9
L21
BSM 12H,5
BSM STATUS,0
GOTO N8
L22
BCM 12H,5
BSM STATUS,0
RLM 1DH,1
GOTO N8
L23
BSM 12H,5
BSM STATUS,0
RLM 1DH,1
GOTO N8
L24
BCM 12H,5
BSM STATUS,0
RLM 1DH,1
RLM 1DH,1
GOTO N8
L25
BSM 12H,5
BSM STATUS,0
RLM 1DH,1
RLM 1DH,1
GOTO N8
L15
BSM 12H,4
BSM STATUS,0
GOTO N7
L16
BCM 12H,4
BSM STATUS,0
RLM 1CH,1
GOTO N7
L17
BSM 12H,4
BSM STATUS,0
RLM 1CH,1
GOTO N7
L18
BCM 12H,4
BSM STATUS,0
RLM 1CH,1
RLM 1CH,1
GOTO N7
L19
BSM 12H,4
BSM STATUS,0
RLM 1CH,1
RLM 1CH,1
GOTO N7
L20
BCM 12H,4
BSM STATUS,0
RLM 1CH,1
RLM 1CH,1
RLM 1CH,1
GOTO N7
L9
BSM 12H,3
BSM STATUS,0
GOTO N5
L10
BCM 12H,3
BSM STATUS,0
RLM 1BH,1
GOTO N5
L11
BSM 12H,3
BSM STATUS,0
RLM 1BH,1
GOTO N5
L12
BCM 12H,3
BSM STATUS,0
RLM 1BH,1
RLM 1BH,1
GOTO N5
L13
BSM 12H,3
BSM STATUS,0
RLM 1BH,1
RLM 1BH,1
GOTO N5
L14
BCM 12H,3
BSM STATUS,0
RLM 1BH,1
RLM 1BH,1
RLM 1BH,1
GOTO N5
L5 ;一个1
BSM 12H,2
BSM STATUS,0
GOTO N4
L6 ;两个1
BCM 12H,2
BSM STATUS,0
RLM 1AH,1
GOTO N4
L7 ;三个1
BSM 12H,2
BSM STATUS,0
RLM 1AH,1
GOTO N4
L8 ;四个1
BCM 12H,2
BSM STATUS,0
RLM 1AH,1
RLM 1AH,1
GOTO N4
L3
GOTO N3
L4
BCM STATUS,0
RLM 19H,1
GOTO N3
L1
BCM 12H,0
GOTO N1
;-----------------------
K1
MOVM 10H,0
MOVAM 14H
GOTO M1
K2
MOVM 10H,0
MOVAM 15H
GOTO M2
K3
MOVM 10H,0
MOVAM 16H
GOTO M3
K4
MOVM 10H,0
MOVAM 17H
GOTO M4
;----------------------
LOOP
NOP
;GOTO $
END
⌨️ 快捷键说明
复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?