導航:首頁 > 源碼編譯 > 十進制數的BCD碼加減法編譯

十進制數的BCD碼加減法編譯

發布時間:2022-02-17 14:34:29

① 微機原理實驗:十進制數的BCD碼相減運算。請解釋使用DAS的原因。

用於循環過程中的工作單元,這是因為:加減運算中,減數和被減數都不止一個,所以需要用到循環功能。還有就是可以用計數器來控制循環!如果遇到循環中包含循環,原理也是一樣,通過插入ASD來實現

② 十進制數-85的bcd碼是怎麼計算

BCD碼就是8421碼
將每一位用4為8421來表示
如5用8421表示為0101
8用8421表示為1000
負號用最高位為「1」表示,
85表示為1000 0101
-85表示為1 1000 0101

③ 用BCD碼進行十進制數加法

樓上寫錯了,產生進位應該還加上0110(即十進制的6)進行修正zd,因為BCD碼每四位數字表示內一個一位十進制數,但是四位二進制數能表示16個數,當產生進位容時,有6個數沒有加上,故產生進位時,要加上6
(1)
0111
0100
1000
+
0001
0110
1001
-------------------
1000
1011
0001
+
0110
0110
-------------------
1001
0001
0111
748+169
=
917
(2)
0011
1001
1001
+
0100
1000
1001
-------------------
1000
0010
0010
+
0110
0110
-------------------
1000
1000
1000
399+489
=888

④ BCD碼的加減法

當兩個BCD碼相加,如果和等於或小於 1001(即十進制數9),不需要修正;

如果相加之和在 1010 到1111(即十六進制數 0AH~0FH)之間,則需加 6 進行修正;

如果相加時,本位產生了進位,也需加 6 進行修正。

這樣做的原因是,機器按二進制相加,所以 4 位二進制數相加時,是按「逢十六進一」的原則進行運算的,而實質上是 2 個十進制數相加,應該按「逢十進一」的原則相加。

16 與10相差 6,所以當和超過 9或有進位時,都要加 6 進行修正。下面舉例說明。

【例 1.3】 需要修正 BCD碼運算值的舉例。

計算 5+8:

解:將 5 和 8 以 8421 BCD輸入機器,則運算如下:

0 1 0 1

+) 1 0 0 0

1 1 0 1 結果大於 9

+) 0 1 1 0 加 6 修正

1 0 0 1 1 即13 的 BCD碼

結果是 0011,即十進制數3,還產生了進位。5+8=13。


(4)十進制數的BCD碼加減法編譯擴展閱讀

BCD碼的分類:

BCD碼可分為有權碼和無權碼兩類:

有權BCD碼有8421碼、2421碼、5421碼,其中8421碼是最常用的;無權BCD碼有餘3碼,餘3循環碼等。

1、8421:

8421 BCD碼是最基本和最常用的BCD碼,它和四位自然二進制碼相似,各位的權值為8、4、2、1,故稱為有權BCD碼。

和四位自然二進制碼不同的是,它只選用了四位二進制碼中前10組代碼,即用0000~1001分別代表它所對應的十進制數,餘下的六組代碼不用。

2、5421和2421:

5421 BCD碼和2421 BCD碼為有權BCD碼,它們從高位到低位的權值分別為5、4、2、1和2、4、2、1。

這兩種有權BCD碼中,有的十進制數碼存在兩種加權方法。

這說明5421 BCD碼和2421 BCD碼的編碼方案都不是惟一的,表1-2隻列出了一種編碼方案。

參考資料

網路-BCD碼

⑤ 為什麼BCD碼十進制數加減運算與要進行調整

BCD碼是0-9,而二進制的4位可以表示0-F,那麼從A-F就超出了BCD碼的表示範圍,就要進行進位了(加法時),而減法時,借位不是借16,而是借10,所以也需要調整。

⑥ 兩個十進制數用bcd碼形式表示後可以直接相加得到該兩個十進制數之和的bcd碼形

各個數位分別相加,所得結果判斷是否大於9,若大於則減6,進位即可

⑦ 將四位的十進制數轉成一個為BCD碼的程序

二進制編碼的十進制數,簡稱BCD碼(Binarycoded Decimal). 這種方法是用4位二進制碼的組合代表十進制數的0,1,2,3,4,5,6 ,7,8,9 十個數符。4位二進制數碼有16種組合,原則上可任選其中的10種作為代碼,分別代表十進制中的0,1,2,3,4,5,6,7,8,9 這十個數符。最常用的BCD碼稱為8421BCD碼,8.4.2.1 分別是4位二進數的位取值。 點擊此處將給出十進制數和8421BCD編碼的對應關系表。
1、BCD碼與十進制數的轉換
BCD碼與十進制數的轉換.關系直觀,相互轉換也很簡單,將十進制數75.4轉換為BCD碼如:
75.4=(0111 (0101.0100)BCD 若將BCD碼1000 0101.0101轉換為十進制數如: (1000 0101.0101)BCD=85.5
注意:同一個8位二進制代碼表示的數,當認為它表示的是二進制數和認為它表示的是二進制編碼的十進制數時,數值是不相同的。
例如:00011000,當把它視為二進制數時,其值為24;但作為2位BCD碼時, 其值為18。
又例如00011100,如將其視為二進制數,其值為28,但不能當成BCD碼,因為在8421BCD碼中,它是個非法編碼 .
2、BCD碼的格式
計算機中的BCD碼,經常使用的有兩種格式,即分離BCD碼,組合BCD碼。
所謂分離BCD碼,即用一個位元組的低四位編碼表示十進制數的一位,例如數82的存放格式為:
_ _ _1 0 0 0 _ _ _ _0 0 1 0 其中_表示無關值。
組合BCD碼,是將兩位十進制數,存放在一個位元組中,例82的存放格式是1000 0010
3、BCD碼的加減運算
由於編碼是將每個十進制數用一組4位二進制數來表示,因此,若將這種BCD碼直接交計算機去運算,由於
計算機總是把數當作二進制數來運算,所以結果可能會出錯。例:用BCD碼求38+49。
解決的辦法是對二進制加法運算的結果採用"加6修正,這種修正稱為BCD調整。即將二進制加法運算的結果修正為BCD碼加法運算的結果,兩個兩位BCD數相加時,對二進制加法運算結果採用修正規則進行修正。修正規則:
(1)如果任何兩個對應位BCD數相加的結果向高一位無進位,若得到的結果小於或等於9,則該不需修正;若得到的結果大於9且小於16時,該位進行加6修正。
(2)如果任何兩個對應位BCD數相加的結果向高一位有進位時(即結果大於或等於16),該位進行加6修正.
(3)低位修正結果使高位大於9時,高位進行加6修正。
下面通過例題驗證上述規則的正確性。
用BCD碼求35+21 BCD碼求25+37 用BCD碼求38+49 用BCD碼求42+95
用BCD碼求91+83 用BCD碼求94+7 用BCD碼求76+45
兩個組合BCD碼進行減法運算時,當低位向高位有借位時,由於"借一作十六"與"借一作十"的差別,將比正確的結果多6,所以有借位時,可採用"減6修正法"來修正.兩個BCD碼進行加減時,先按二進制加減指令進行運算,再對結果用BCD調整指令進行調整,就可得到正確的十進制運算結果。 實際上,計算機中既有組合BCD數的調整指令,也有分離BCD數的調整指令。另外,BCD碼的加減運算,也可以在運算前由程序先變換成二進制數,然後由計算機對二進制數運算處理,運算以後再將二進制數結果由程序轉換為BCD碼

這個應該還是比較詳細滴

⑧ 兩位十進制bcd碼加法

X DW0028
Y DW0059

續:
DAA是對壓縮BCD碼進行十進制調整,AND AL,0FH語句將清除掉高位的數據,必須刪除此語句,其它部分沒有問題,改過後就應該得到正確結果的。
又:ADC是有進位加法沒錯
ADC進位加使用的是CF標志,而十進制調整的進位加是AF標志。

⑨ 求助:求十進制數的BCD碼無須經歷每位數先變為二進制數,再變為十進制數的過程,直接在十進制數後加H

二進制數字,改寫成 16 進制,後面,必須加上 H。

BCD 碼,也是二進制,寫成 16 進制後,加上 H,這很正常。

⑩ 在進行BCD碼加法運算時,為什麼將十進制數45表示成45H為什麼每做一個位元組的 加法運算都要進行

十進制數45
BCD碼表示是2DH,45H表示他本來就是BCD碼,是你看錯了吧!
再說,BCD嗎按16進制可以直接運算,你非要轉化成ASCII碼也行。
進制轉換很簡單,一段代碼而已

閱讀全文

與十進制數的BCD碼加減法編譯相關的資料

熱點內容
蘋果版app是什麼 瀏覽:743
雲伺服器能更換地址 瀏覽:74
linux預讀演算法 瀏覽:556
視頻用什麼app編輯 瀏覽:68
編譯原理清華實驗 瀏覽:976
閑蛋app人氣怎麼樣 瀏覽:273
javacatch用法 瀏覽:859
京峰教育python 瀏覽:984
加密貨幣戰勝法定貨幣 瀏覽:684
混凝土結構中冊pdf 瀏覽:930
永劫無間解壓不了怎麼回事 瀏覽:810
php如何開啟curl 瀏覽:675
紅黃文件夾 瀏覽:125
違背皇帝的命令是死罪嗎 瀏覽:68
phpcurl處理錯誤 瀏覽:463
linuxftp防火牆埠設置 瀏覽:790
java面板圖片 瀏覽:485
泰拉瑞亞14安卓版怎麼操作 瀏覽:720
安卓手機相冊加密軟體 瀏覽:53
免費雲伺服器能永久使用嗎 瀏覽:705