新聞中心

EEPW首頁(yè) > 嵌入式系統(tǒng) > 設(shè)計(jì)應(yīng)用 > 51單片機(jī)多字節(jié)的除法

51單片機(jī)多字節(jié)的除法

作者: 時(shí)間:2012-08-24 來(lái)源:網(wǎng)絡(luò) 收藏


;雙字節(jié)除雙字節(jié)的程序如下:

;雙字節(jié)的
;只是8位的,但有時(shí)候需要實(shí)現(xiàn)雙字節(jié),里面的指令只支持8位。
;想來(lái)想去,只好用減法來(lái)實(shí)現(xiàn)了。下面這個(gè)子程序是雙字節(jié)除以雙字節(jié),商、余數(shù)結(jié)果都是雙字節(jié)保存,可能有點(diǎn)消耗資源,但這樣可以整合在一塊。
;****************************************
;函數(shù)名稱:Div2Byte
;功能描述:無(wú)符號(hào)數(shù)雙字節(jié)
;傳入?yún)?shù):R0R1被除數(shù) R2R3除數(shù)
;返回?cái)?shù)據(jù):R4R5商 R6R7余數(shù)
;其他說(shuō)明:比如雙字節(jié)數(shù)R0R1,R0高字節(jié) R1低字節(jié)
;****************************************
Div2Byte:
mov r0,#0ffh
mov r1,#0ffh
mov r2,#0
mov r3,#254

mov R4,#0
mov R5,#0 ;商賦初值零
mov A,R0
mov R6,A
mov A,R1
mov R7,A ;余數(shù)賦初值,保證商為零時(shí)余數(shù)正常
Div2Byte_1:
mov A,R1
clr c
subb A,R3 ;低字節(jié)相減
mov R1,A
mov A,R0
subb A,R2 ;高位相減
mov R0,A
jc Div2Byte_3 ;如果高字節(jié)都需要借位則退出循環(huán)
clr c
mov A,R5
add A,#1 ;之后JNC判斷,故不用INC
mov R5,A
jnc Div2Byte_2
inc R4 ;商加1
Div2Byte_2:
mov A,R1
mov R7,A
mov A,R0
mov R6,A ;更新余數(shù)
LJMP Div2Byte_1
Div2Byte_3:
nop

END


;兩個(gè)程序均驗(yàn)證無(wú)誤!我也是在網(wǎng)上抄來(lái),然后調(diào)試的。在這里特別感謝提供這個(gè)程序并發(fā)到網(wǎng)上的同行們!

;我覺(jué)得我們搞單片機(jī)這一塊的人都非常非常的友好,不象有的行當(dāng),學(xué)會(huì)了一點(diǎn)點(diǎn)就開(kāi)始保密保守,那樣事

;業(yè)怎么可能發(fā)展?我的口號(hào)是: 不保密,不保守,共同提高。要想比別人更強(qiáng)更高,那就付出更多

三極管相關(guān)文章:三極管放大電路


51單片機(jī)相關(guān)文章:51單片機(jī)教程



上一頁(yè) 1 2 下一頁(yè)

評(píng)論


相關(guān)推薦

技術(shù)專區(qū)

關(guān)閉