单片机实验 二进制到BCD转换

程序如下:;将A中的二进制数拆为3个BCD码,并存入Result开始的3个单元Resultequ20horg0ljmpStartorg0100hBinToBCD:retS... 程序如下:
; 将 A 中的二进制数拆为3个 BCD 码, 并存入 Result 开始的3个单元
Result equ 20h

org 0
ljmp Start

org 0100h
BinToBCD:

ret

Start:
mov sp, #40h
mov a, #123
call BinToBCD
ljmp $

end
展开
 我来答
chensong0007
推荐于2017-09-07 · TA获得超过340个赞
知道答主
回答量:120
采纳率:0%
帮助的人:87万
展开全部
因不太清楚这是哪个单片机和它所对应的具体汇编语法,但是基本的思路是:
提取出a中这个三位数,具体方法:用取余的方法,即把a中的数先除以#100得到百位上的系数(也即百位所对的BCD码),然后存到以Result为地址的三个存储单元中的一个。再把a中的数先除以#10得到十位上的系数和余数(也分别为十位和个位所对的BCD码),然后分别存到以Result为地址的三个存储单元中的另外两个单元。
意法半导体(中国)投资有限公司
2023-06-12 广告
STM32F103是一款高性能的嵌入式芯片,由意法半导体(STMicroelectronics)公司生产。它是STM32系列芯片之一,具有紧凑、低功耗、高性能等特点,被广泛应用于嵌入式系统中。STM32F103的主要特点包括:1. 集成了A... 点击进入详情页
本回答由意法半导体(中国)投资有限公司提供
mjznet
2010-04-26 · TA获得超过323个赞
知道答主
回答量:100
采纳率:100%
帮助的人:40.3万
展开全部
51汇编不熟,给你写个C的吧(转非压缩的BCD),加上注释,你自己改成51汇编吧.

int i = 100; // i 用来做被除数,初值"100".
int idx = 0; // idx 用来确定存储位置的偏移,初值"0".
while( i ) // 循环条件,被除数不为"0",则继续循环.
{
Result[idx] = A / i; // Result 第 idx 偏移位置保存 A 整除 i 的值.
A -= Result[idx]*i; // A 的值 减 Result 第 idx 偏移位置 * i 的值.
i/=10; // 将 i 的值除以"10"
idx++; // Result的偏移值 加"1".
}

以上的思想是
A 整除 100 作为 百位上的BCD
(A-百位上的值) 整除 10 作为 十位上的BCD
(A-百位上的值和十位上的值) 作为个们上的BDC.
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
做而论道
高能答主

2010-04-26 · 把复杂的事情简单说给你听
知道大有可为答主
回答量:3万
采纳率:80%
帮助的人:1.1亿
展开全部
Result equ 20h

org 0
ljmp Start

org 0100h
BinToBCD:
MOV R0, #Result ;目的地址.
MOV B, #10
DIV AB ;除以10
MOV @R0, B ;B中是余数,即个位数.
INC R0 ;修改地址.
MOV B, #10
XCH A, B
DIV AB ;再除以10
MOV @R0, B ;B中是余数,即十位数.
INC R0 ;修改地址.
MOV @R0, A ;存百位数.

ret
Start:
mov sp, #40h
mov a, #123
call BinToBCD
ljmp $
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 更多回答(1)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式