欧美极品高清xxxxhd,国产日产欧美最新,无码AV国产东京热AV无码,国产精品人与动性XXX,国产传媒亚洲综合一区二区,四库影院永久国产精品,毛片免费免费高清视频,福利所导航夜趣136

專注電子技術學習與研究
當前位置:單片機教程網 >> MCU設計實例 >> 瀏覽文章

51單片機多字節的除法

作者:佚名   來源:本站原創   點擊數:  更新時間:2011年04月08日   【字體:
;(四字節除四字節,被除數或者除數小于四字節,則前面填0即可)

; 后面還有一個雙字節除雙字節的程序,如果除數是單字節,則字高位填為00即可)

;51單片機多字節的除法

;R4R5R6R7放被除數  R0R1R2R3放除數 
;當除數的長度為4字節時 R3R4R5R6是余數 R7是商
;當除數的長度為3字節時 R3R4R5是余數 R6R7是商
;當除數的長度為2字節時 R3R4是余數 R5R6R7是商
;當除數的長度為1字節時 R3是余數 R4R5R6R7是商

;被除數是雙字時,將R4R5置為0即可,這個程序包打天下
;用一個單元來放中間值 單元名為danyuan
danyuan  equ  3BH
MOV R7,#0ffh
MOV R6,#0ffh
MOV R5,#0ffh
MOV R4,#0ffh
MOV R3,#100
MOV R2,#0H
MOV R1,#0H
MOV R0,#0H


MOV B,#08H
CJNE R0,#00H,DVDL
MOV B,#10H
CLR A
XCH A,R3
XCH A,R2
XCH A,R1
XCH A,R0
CJNE R0,#00H,DVDL
CLR A
XCH A,R2
XCH A,R1
XCH A,R0
MOV B,#18H
CJNE R0,#00H,DVDL
CLR A
XCH A,R1
XCH A,R0
MOV B,#20H
CJNE R0,#00H,DVDL
SETB OV
JMP END_DIV
DVDL: MOV danyuan,#00H
DVDL2: CLR C
 MOV A,R7
RLC A
MOV R7,A
MOV A,R6
RLC A
MOV R6,A
XCH A,R5
RLC A
XCH A,R5
XCH A,R4
RLC A
XCH A,R4
XCH A,danyuan
RLC A
XCH A,danyuan
JC DVDL1
DVDL4: SUBB A,R3
MOV A,R5
SUBB A,R2
MOV A,R4
SUBB A,R1
MOV A,danyuan
SUBB A,R0
JC DVDL3
DVDL1: CLR C
MOV A,R6
SUBB A,R3
MOV R6,A
MOV A,R5
SUBB A,R2
MOV R5,A
MOV A,R4
SUBB A,R1
MOV R4,A
MOV A,danyuan
SUBB A,R0
MOV danyuan,A
INC R7
DVDL3: DJNZ B,DVDL2
END_DIV:
MOV R3,danyuan
NOP   ;停在這里看結果 
END

;雙字節除雙字節的程序如下:

;51單片機雙字節的除法
;51單片機只是8位的,但有時候需要實現雙字節除法,里面的指令只支持8位。
;想來想去,只好用減法來實現了。下面這個子程序是雙字節除以雙字節,商、余數結果都是雙字節保存,可能有點消耗資源,但這樣可以整合在一塊。
;****************************************
;函數名稱:Div2Byte
;功能描述:無符號數雙字節除法
;傳入參數:R0R1被除數 R2R3除數
;返回數據:R4R5商 R6R7余數
;其他說明:比如雙字節數R0R1,R0高字節 R1低字節
;****************************************
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 ;余數賦初值,保證商為零時余數正常
Div2Byte_1:
mov A,R1
clr c
subb A,R3 ;低字節相減
mov R1,A
mov A,R0
subb A,R2 ;高位相減
mov R0,A
jc Div2Byte_3 ;如果高字節都需要借位則退出循環
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 ;更新余數
LJMP Div2Byte_1
Div2Byte_3:
nop

END


;兩個程序均驗證無誤!我也是在網上抄來,然后調試的。在這里特別感謝提供這個程序并發到網上的同行們!

;我覺得我們搞單片機這一塊的人都非常非常的友好,不象有的行當,學會了一點點就開始保密保守,那樣事

;業怎么可能發展?我的口號是: 不保密,不保守,共同提高。要想比別人更強更高,那就付出更多吧!
關閉窗口

相關文章