將給定的二進位制數轉換成BCD碼的微控制器程式及其實驗結果

2021-05-30 14:48:43 字數 2381 閱讀 1309

1樓:生活如歌

binbcd: mov b, #100 (100作為除數送入b中)

div ab (十六進位制數除以100)mov r3, a (百位數送r3,餘數放入b中)mov a, #10 (分離十位數與個位數)xch a,b (餘數放入a中,除數放入b中)div ab (分離出十位在a中,個位在b中)swap a (十位數交換到a的高4位)add a,b (十位數與個位數相加送入 a中)end將a中的二進位制數(比如c9h)轉換為bcd碼為201h,其中百位存在r3中(r3=02h),十位個位壓縮方式存在a中(a=01h)

微控制器16位二進位制轉換成bcd碼程式理解

2樓:匿名使用者

rlc是帶進位迴圈移位指令,注意,是迴圈

移位——即不丟原資料的位。cy也就是進位位,在移位過程中,僅用作臨時儲存器——也就是中轉站——左高位移動到右低位的中介。

當完成一個週期的迴圈左移操作後,若中間沒有作任何操作,則資料將還原為原來的樣子,也就是流水燈的原理。 前提是,在執行整個操作前,cy必須清零,否則,cy中的1(若已有進位)在操作過程中會參與運算(addc及da操作),從而導致錯誤的結果。

3樓:神祕男孩

能把程式完整的寫出來嗎

關於mcs-51微控制器是如何將單位元組二進位制數轉化為bcd碼的問題

4樓:匿名使用者

乘除法的時候可以不考慮進位制的,比如說 #0ffh這個十六進位制數 存放於a中,#100這個十進位制數放於b中 然後div ab 這時 a等於#02h b等於#37h等於55

在然後假設a中的數為 ffh

binbcd:

mov b, #100 (b=100,十進位制100,)

div ab (a等於#02h,b等於#37h等於55)

mov r3, a (a=02h)

mov a, #10 (a=10=0ah,b=55=37h)

xch a,b (a=55=37h, b=10=0ah)

div ab (a=05h=5 , b=5=05h)

swap a (a=50h,b=05h)

add a,b (a=55h,這時十位各位的bcd嗎已經求出來了,將

37h=55轉換為55h

end1 請問這個程式求解的思路是什麼?

思路就是對一個數求模和求於來分離百位十位和個位

例如168

168/100=1餘68

68/10=6餘8

8/1=8餘0

這樣就分離了百位十位和個位

2 該程式的第二句"div ab"的解釋是十六進位制數除以100,可是a中應該存放的是一個八位的二進位制數,這是怎麼回事?

這個是你沒理解cpu存資料的方式,a中存放的其實歸根結底說是二進位制數,機器只認識二進位制數,對這段程式編譯之後我們輸入的十進位制100也變成二進位制數了,我們通常說十六進位制數是因為十六進位制數和二進位制數有位上的對應關係,比如1100 0110b=c6h 也就是說二進位制數每4位一段各自寫成十六進位制數就把二進位制轉換成十六進位制了,

3 最後為什麼要十位數與個位數相加,不是要分離十位數與個位數嗎?

我想如果你清楚bcd碼的含義你就明白了

bcd碼就是用十六進位制數來表示十進位制的數

例如:45h是等於十進位制的69的,但如果你說他是bcd碼他就代表十進位制數45

這樣你就會發現不是每個十六進位制數都是bcd碼的,例如aah就不是bcd碼,因為沒有aa這樣的十進位制數

我最後總結一下,就是我們所說的十進位制數也好十六進位制數也好,歸根到底機器都是要把他變為二進位制數的,機器也只認識二進位制數,這樣你就好理解了,我們不會處理不同進位制數之間的運算,運算時必須要把他轉換同進位制的數,機器也是這樣,只不過我們擅長的是十進位制的運算,而機器擅長的是二進位制運算,二進位制數位數多不方便我們就找了一個幫手十六進位制數

希望你能看得懂

5樓:做而論道

單位元組二進位制數,寫成十進位制,就是0~255。

該程式的第二句div ab除以100之後,a中是商(0~2),b中是餘數(0~99)。

a中的商,就是百位數,存放到r3。

餘數除以10之後,a中商是10位(0~9),b中是個位(0~9)。

十位數交換到a的高4位,再加上個位數,那只是題目中要求的存放方法而已。

51微控制器16位二進位制數用移位轉換成bcd碼的原理是什麼?做課程設計,困擾好幾天了,求大神講講

6樓:做而論道

da a ;十進位制調整,變成bcd碼

經過這一步,必定是 bcd 碼。

二進位制數轉換成十六進位制數,二進位制數1010101轉換成十六進位制數

1010.101整數部分從右向左四位分組,不足補0小數部分從左向右四位分組,不足補0原數 1010.10101010 2 3 2 1 8 2 10 a 16 小數部分也是a 16 結果 1010.101 2 a.a 16 a.ah 整數 2 3 2 1 a 小數 2 3 2 1 a h代表十六進位制...

將二進位制數轉換成十進位制數,二進位制數如何轉換成十進位制數?

1乘以2的5次方 0乘以2的4次方 1乘以2的3次方 0乘以2的2次方 1乘以2的1次方 每個數都這樣算就可以了 要什麼過程,你用計算器,按到二進位制,一轉不就行樂 10101 1 2 4 0 2 3 1 2 2 0 2 1 1 2 0 16 4 1 21 同理,110001 1 2 5 1 2 4...

十進位制數124轉換成二進位制數是

十進位制數124轉換成二進位制數是1111100。整數轉換可以採用 除2取餘,逆序排列 法計算。具體計算過程 124 2 62 餘0,62 2 31 餘0,31 2 15 餘1,15 2 7 餘1,7 2 3 餘1,3 2 1 餘1,1 2 0 餘1。然後將得到的餘數進行逆向排序,得到轉換後的二進位...