?? 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 + -