專(zhuān)注電子技術(shù)學(xué)習(xí)與研究
當(dāng)前位置:單片機(jī)教程網(wǎng) >> MCU設(shè)計(jì)實(shí)例 >> 瀏覽文章

用左移減法做單字節(jié)除法運(yùn)算

作者:佚名   來(lái)源:本站原創(chuàng)   點(diǎn)擊數(shù):  更新時(shí)間:2013年03月22日   【字體:
;只能整數(shù)運(yùn)算及非0運(yùn)算
 ORG 0000H
 JMP A1
 ORG 002BH
A1: MOV R0,#00001001B;被除數(shù)
 MOV R1,#0;余數(shù)
 MOV R2,#0;商
 MOV R5,#00000011B;除數(shù)
 MOV 33H,#8;左移8次16位除法左移16次
A2: MOV A,R0
 RLC A
 MOV R0,A
 MOV A,R1
 RLC A
 MOV R1,A
CLR C;清C因?yàn)闇p法A=A-C-R5
 SUBB A,R5;用移位后的數(shù)減去商
 JC A3 ;比較大小
 MOV R1,A;大的則把余數(shù)保存起來(lái)下次再減
A3: CPL C;商值處理
 MOV A,R2;商值移位
 RLC A
 MOV R2,A
 DJNZ 33H,A2;是否完成
 JMP $
;思路---只要R1-R5不小于0商就置1并將余數(shù)賦值給R1
;             R1             R5                           R2
;1、00000000-00000011小于0,商值為00000000
;2、00000000-00000011小于0,商值為00000000
;3、00000000-00000011小于0,商值為00000000
;4、00000000-00000011小于0,商值為00000000
;5、00000001-00000011小于0,商值為00000000
;6、00000010-00000011小于0,商值為00000000
;7、00000100-00000011大于0,商值為00000001,余數(shù)為00000001賦值給R1
;8、00000011-00000011等于0,商值為00000011,余數(shù)為00000000
;至此算法完成
;注:?jiǎn)巫止?jié)是循環(huán)8次,如果是雙字節(jié)就要循環(huán)16次,依次類(lèi)推

 end
關(guān)閉窗口

相關(guān)文章