?? 4225.asm
字號:
div16s: ; 16位/16位帶符號除法
mov r13,r17 ;確定結果符號
eor r13,r19
sbrs r17,7 ;判被除數的正負
rjmp d16s1
com r17 ;為負,被除數取補
com r16
subi r16,low(-1)
sbci r17,high(-1)
d16s1:
sbrs r19,7 ;判除數的正負
rjmp d16s2
com r19 ;為負,除數取補
com r18
subi r18,low(-1)
sbci r18,high(-1)
d16s2:
clr r14 ;清除余數和進位
sub r15,r15
ldi r20,17 ;初始化循環計數器
d16s3:
rol r16 ;左移被除數
rol r17
dec r20 ; 計數器減 1
brne d16s5
sbrs r13,7 ;判結果的正負
rjmp d16s4 ;不為 0 ,跳至d16s4
com r17 ;為負,結果取補
com r16
subi r16,low(-1)
sbci r17,high(-1)
d16s4:
ret
d16s5:
rol r14 ;左移余數(被除數移到除數)
rol r15
sub r14,r18 ;余數-除數
sbc r15,r19
brcc d16s6 ;夠減,跳至 d16s6
add r14,r18
adc r15,r19
clc ;清進位位
rjmp d16s3
d16s6:
sec ;置進位位
rjmp d16s3
?? 快捷鍵說明
復制代碼
Ctrl + C
搜索代碼
Ctrl + F
全屏模式
F11
切換主題
Ctrl + Shift + D
顯示快捷鍵
?
增大字號
Ctrl + =
減小字號
Ctrl + -