51單片機多字節的除法
;雙字節除雙字節的程序如下:
;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
;兩個程序均驗證無誤!我也是在網上抄來,然后調試的。在這里特別感謝提供這個程序并發到網上的同行們!
;我覺得我們搞單片機這一塊的人都非常非常的友好,不象有的行當,學會了一點點就開始保密保守,那樣事
;業怎么可能發展?我的口號是: 不保密,不保守,共同提高。要想比別人更強更高,那就付出更多
三極管相關文章:三極管放大電路
51單片機相關文章:51單片機教程
評論