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 + -
显示快捷键?