1024手机基地看电影,午夜福利视频导航,国产精品福利在线一区,亚洲欧美日韩另类成人,在线观看午夜日本理论片,成年超爽免费网站,国产精品成人免费,精品动作一级毛片,成人免费观看网站,97精品伊人久久大香蕉

 找回密碼
 立即注冊

QQ登錄

只需一步,快速開始

搜索
查看: 3788|回復: 2
打印 上一主題 下一主題
收起左側

4位16進制數轉換為10進制數(8421BCD)求思路

[復制鏈接]
跳轉到指定樓層
樓主
如題,在做一道十進制1+2+3+4+……+100的單片機匯編題目,最后要求結果轉換為BCD碼形式,也就是輸出為5050。
我現在是高位低位分開存,利用進位標志符來做的累加(ADDC),最后得到了十六進制輸出13BA。現在遇到的問題是,高位和低位是分開的,怎么轉換為BCD呢?
我嘗試了下直接在累加過程中對高位和低位分別使用DA A進行BCD修正,結果不對。希望有大佬能夠提供下思路!!感謝!
下面是我用keil寫的匯編代碼,提供參考。

111111.png (316.63 KB, 下載次數: 33)

匯編代碼截圖

匯編代碼截圖
分享到:  QQ好友和群QQ好友和群 QQ空間QQ空間 騰訊微博騰訊微博 騰訊朋友騰訊朋友
收藏收藏 分享淘帖 頂 踩
回復

使用道具 舉報

沙發
ID:235200 發表于 2020-3-30 18:30 | 只看該作者
入口條件:待轉換的雙字節十六進制整數在R6、R7中。
出口信息:轉換后的三字節BCD碼整數在R3、R4、R5中。
影響資源:PSW、A、R2~R7 堆棧需求: 2字節
HB2: CLR A ;BCD碼初始化
MOV R3,A
MOV R4,A
MOV R5,A
MOV R2,#10H ;轉換雙字節十六進制整數
HB3: MOV A,R7 ;從高端移出待轉換數的一位到CY中
RLC A
MOV R7,A
MOV A,R6
RLC A
MOV R6,A
MOV A,R5 ;BCD碼帶進位自身相加,相當于乘2
ADDC A,R5
DA A ;十進制調整
MOV R5,A
MOV A,R4
ADDC A,R4
DA A
MOV R4,A
MOV A,R3
ADDC A,R3
MOV R3,A ;雙字節十六進制數的萬位數不超過6,不用調整
DJNZ R2,HB3 ;處理完16bit
RET
回復

使用道具 舉報

板凳
ID:401564 發表于 2020-3-30 20:44 | 只看該作者
不知道是誰想出來的扯蛋題目
用匯編去轉換BCD碼干嘛呢?完成運算之后,拆分出來直接顯示不就可以了嗎?
你這個加法是超過了256的,要用兩個地址來存放一個16進制數的
一個16進制數最大數是:65535
在進行BCD碼運算中,你要用到三個地址的,結果應該是005050才是,而不是5050
回復

使用道具 舉報

您需要登錄后才可以回帖 登錄 | 立即注冊

本版積分規則

小黑屋|51黑電子論壇 |51黑電子論壇6群 QQ 管理員QQ:125739409;技術交流QQ群281945664

Powered by 單片機教程網

快速回復 返回頂部 返回列表