導航:首頁 > 操作系統 > 單片機移位除法

單片機移位除法

發布時間:2025-06-26 02:56:36

單片機中怎麼計算除法

可通過單片機除法運算程」DIV AB「,進行計算。

」DIV AB「表示:(A)÷(B)→(A)和(B),把累加器A的8位無符號整數除以寄存器B中的8位無符號整數,所得到的商存在累加器A,而余數存在寄存器B中。

例如,使用DIV指令計算16÷5,運行如下3個指令:

MOV A,#16;

MOV B,#5;

DIV AB;

得到A為3,表示商;B為1,表示余數。

❷ 8位單片機怎麼進行十六位除十六位,最好有程序

二進制除法運算
多位元組二進制除法
被除數為3個位元組,在wr2_wr1_wr0單元中,wr2.7為最高位,wr0.0為最低位.
除數為2個位元組,在wr9_wr8中。
演算法:EM78單片機沒有除法指令,而且本例中除法為多位元組除法,可採用如下演算法.
將被除數擴充一個位元組0X23_0X22清0.被除數左移1位,0X23_0X22中數據減去0X31_0X30中數據.夠減則減且0X20.0置1,減出結果存入0X23_0X22
不夠減則0X23_0X22保持不變,0X20.0清0。
然後被除數再左移1位,重復上述過程。共循環16次,最後0X23_0X22中得相減余數,0X21_0X20中得商。

注意,若被除數左移後C標志為1,則不比較0X23_0X22與0X31_0X30數據大小關系而直接相減。
main: mov a,@0x55 ;被除數賦值
mov wr0,a
mov wr1,a
mov wr2,a
mov a,@0x0 ;被除數擴充1位元組並清0
mov wr3,a
mov a,@0x12 ;除數賦值
mov wr8,a
mov wr9,a

mov a,@0x10 ;循環次數為16
mov wr7,a
again: call rt_sub ;調移位除法子程
djz wr7 ;16次循環完成則結束
jmp again ;未完成則繼續

self: jmp self

rt_sub:
bc 0x03,0 ;c標志清0
rlc wr0 ;被除數左移1位
rlc wr1
rlc wr2
rlc wr3
jbc 0x03,0
jmp rt3 ;c標志為1則直接相減
mov a,wr3 ;c標志為0則先比較大小
mov wr5,a
mov a,wr2
mov wr4,a
mov a,wr9 ;先比較高位
sub wr5,a
jbc 0x03,2
jmp rt1 ;高位相等跳rt1比較低位
jmp rt2 ;高位不等跳rt2
rt1: mov a,wr8 ;比較低位
sub wr4,a
jbc 0x03,2
jmp rt3 ;低位也相等則跳rt3,相減,上1
rt2: jbs 0x03,0
ret ;減數大則返回,減數小則相減,上1
rt3: bs wr0,0 ;上1
call sub_2b ;調2位元組減法子程
ret

sub_2b:
mov a,wr9 ;高位元組相減
sub wr3,a
mov a,wr8 ;低位元組相減
sub wr2,a
jbc 0x03,2
ret ;低位元組相等,無借位,返回
jbc 0x03,0
ret ;無借位,返回
dec wr3 ;低位元組相減有借位,高位元組結果減1
ret
eop

❸ 8051單片機用匯編循環移位指令實現除法,被除數為2的倍數,怎麼編啊

很簡單呀,比如一個數除以4
MOV A,DAT
CLR C
RRC A
CLR C
RRC A
被除數是2的幾次方,就用一次右移指令。

❹ 在單片機匯編語言中怎樣做除法運算(不用DIV指令)初步發現右移一次相當於除於2TKS!

可用移位、比較的方法實現任意位除法。右移一次相當於除於2,前提條件是原數必須是偶數。

❺ 關於C51單片機的小數點四捨五入處理

將你需保留的那一位的低一位加5之後舍掉即可

單片機內一般採用整數計算,如果要保留兩位小數,需將原數據擴大100倍,小數點該向左移2位
18754/100=187·54 但單片機只能算整數,因此結果只能是187
因此計算時我們我們將被除數擴大100倍 相當於小數點向右移2位,1875400/ 100=18754
然後我們將計算結果的小數點再向左移回來2 位,即變成了 187.54 這就是定點小數的演算法
如果18754/100我們只保留一位小數
我們可以這樣處理 (18754*100+500)=1875900
1875900/100=18759
小數點左移2位,結果187.59 最後一位不考慮取187.5
但如果18755/100我們只保留一位小數
(18755*100+500)=1876000
1876000/100=18760

小數點左移2位,結果187.60 最後一位不考慮取187.6
看到了吧,4捨去了 5就入上去了
所以要保留三位小數,需將原來數據擴大1000倍,再除1000
所以要保留4位小數,需將原來數據擴大10000倍,再除10000
.......
擴大100倍或1000倍操作要放在除法之前,因除法才會導致小數丟失
需4舍5 入,將要保留的那一位數的低一位加5即可
當然這是低級演算法,用C語言編程直接可以用浮點數,結果輸出 時會自動四舍5 入
你所要做的是將浮點數轉換為字元(用sprint函數)並控制輸出數據的位數,格式控制類似於printf函數

❻ 51單片機怎樣從一個非常大的數字裡面提取個十百千萬位等......

下面舉例說明萬千百十個的表示方法。其實很簡單,用除法取余就行。

i=a/b ;//取商
i=a%b;//取余

方法很多,以下是一例:
unsigned int wan,qian,,shi ,ge,
wan=i/10000;//除一萬取商,是萬位。
qian=(i/1000)%10;//先除1000,取商,商的個位是千位,所以再除10 取余。
=(i%100)/10%10;//先除100,取商,商的個位是百位,所以再除10 取余。
shi=(i%100)/10;//先除100,取余,商再除10 取余。
ge==(i%10;//除10取余。

不過閣下要知道整形量最大是65535,假如你的數據達到999999,你就要定義長整形量了。
unsigned long int i=999999;

如當I<10的時候 P0=table[i/10]; 個位
這樣的演算法 我寫的不行 ,請高手寫下 ,我看下我的出錯在什麼地方
i/10是取商啊,怎麼可能是個位呢?是十位。I<10的話,一定是0了。

移位的方法不行,移位是2進制運算。你這個是十進制。

閱讀全文

與單片機移位除法相關的資料

熱點內容
資料庫查詢系統源碼 瀏覽:607
php5314 瀏覽:347
完美國際安裝到哪個文件夾 瀏覽:660
什麼app可以掃一掃做題 瀏覽:531
程序員編碼論壇 瀏覽:914
淘點是什麼app 瀏覽:649
中國高等植物pdf 瀏覽:444
51單片機時間 瀏覽:172
後台如何獲取伺服器ip 瀏覽:256
單片機流水燈程序c語言 瀏覽:225
程序員第二職業掙錢 瀏覽:229
運行里怎麼輸入伺服器路徑 瀏覽:831
pythonstepwise 瀏覽:498
劉一男詞彙速記指南pdf 瀏覽:52
php認證級別 瀏覽:360
方舟編譯啥時候推送 瀏覽:1001
php手機驗證碼生成 瀏覽:667
哲學思維pdf 瀏覽:7
凌達壓縮機有限公司招聘 瀏覽:526
weblogic命令部署 瀏覽:30