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