4216.asm

来自「单片机开发资料光盘-双龙-686M.zip」· 汇编 代码 · 共 34 行

ASM
34
字号
mpy32s:	                  ;32位*32位带符号乘法
	clr	r27       ;清结果高32位和进位位
	sub	r26,r26		
	sub	r25,r25
	sub	r24,r24	
	ldi	r28,32	  ;初始化循环计数器
m32s_1:
	brcc	m32s_2    ;C=0,跳转至m32s_2
	add	r24,r16	  ;C=1,被乘数加到结果高32位
	adc	r25,r17
	adc	r26,r18
	adc	r27,r19	
m32s_2:
	sbrc	r20,0     ;判当前位是否置位
	rjmp	m32s1     ;为1,置位,跳转至m32s1
	rjmp	m32s2     ;为0,跳转至m32s2
m32s1:
        sub	r24,r16   ;结果高32位中减去被乘数
	sbc	r25,r17	
	sbc	r26,r18
	sbc	r27,r19
m32s2:
        asr	r27       ;算术右移 r27
	ror	r26       ;循环右移结果
	ror	r25
	ror	r24
	ror	r23
	ror	r22
	ror	r21
	ror	r20
	dec	r28       ;计数器减1
	brne	m32s_1	  ;不为0,继续循环
	ret               ;返回 

⌨️ 快捷键说明

复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?