📄 4216.asm
字号:
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 + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -