8086将给定的二进制数1234。转换成二进制编码的十进制转8421bcd码bcd码

您现在的位置: &
&&&&计算机中使用的是二进制数,人们习惯使用的是十进制数,因此,输入到计算机中的十进制数需要转换成二进制数;数据输出时,应将二进制数转换成十进制数。为了方便,大多数通用性较强的计算机需要能直接处理十进制形式表示的数据。为此,在计算机中还设计了一种中间数字编码形式,它把每一位十进制数用 4 位二进制编码表示,称为二进制编码的十进制表示形式,简称 BCD码(binary coded decimal),又称为二―十进制数。
4 位二进制数码,可编码组合成 16 种不同的状态,而十进制数只有 0,1,…,9 这十个数码,因此选择其中的十种状态作BCD码的方案有许多种,如 <FONT color=#ffBCD码、格雷码、余3码等,编码方案见表2.1.1。
表2.1.1 用二进制编码表示的十进制数
<FONT color=#ff码
<FONT color=#ff码
<FONT color=#ff码
<FONT color=#ff
<FONT color=#ff
<FONT color=#ff
<FONT color=#ff
<FONT color=#ff
<FONT color=#ff
<FONT color=#ff
<FONT color=#ff
<FONT color=#ff
<FONT color=#ff
<FONT color=#ff
<FONT color=#ff
<FONT color=#ff
<FONT color=#ff
<FONT color=#ff
<FONT color=#ff
<FONT color=#ff
<FONT color=#ff
<FONT color=#ff
<FONT color=#ff
<FONT color=#ff
<FONT color=#ff
<FONT color=#ff
<FONT color=#ff
<FONT color=#ff
<FONT color=#ff
<FONT color=#ff
<FONT color=#ff
<FONT color=#ff
<FONT color=#ff
<FONT color=#ff
<FONT color=#ff
<FONT color=#ff
<FONT color=#ff
<FONT color=#ff
<FONT color=#ff
<FONT color=#ff
<FONT color=#ff
<FONT color=#ff
<FONT color=#ff
<FONT color=#ff
<FONT color=#ff
<FONT color=#ff
<FONT color=#ff
<FONT color=#ff
<FONT color=#ff
<FONT color=#ff
<FONT color=#ff
<FONT color=#ff
<FONT color=#ff
最常用的 BCD 码是 8421BCD 码。8421BCD 码选取 4 位二进制数的前 10 个代码分别对应表示十进制数的 10 个数码,1010 ~ 1111这 6 个编码未被使用。从表中可以看到这种编码是有权码。四个二进制位的位权从高向低分别为8,4,2和1,若按权求和,和数就等于该代码所对应的十进制数。例如,0110 = 22 + 21 = 6。
把一个十进制数变成它的 8421BCD 码数串,仅对十进制数的每一位单独进行即可。例如变1986为相应的 8421BCD 码表示,结果为 00 0110。反转换过程也类似,例如变 11 0111 为十进制数,结果应为 5937 。
8421BCD 码的编码值与字符 0 到 9 的 ASCII 码的低 4 位相同,有利于简化输入输出过程中从字符 → BCD 和从BCD → 字符的转换操作,是实现人机联系时比较好的中间表示。需要译码时,译码电路也比较简单。
8421BCD 码的主要缺点是实现加减运算的规则比较复杂,在某些情况下,需要对运算结果进行修正。step7中bcd码和十六进制数
查看: 1751|
摘要: BCD码(Binary-Coded Decimal?6?0)是二进制编码的十进制数的缩写,BCD码用4位二进制数表示一位十进制数。BCD码各位的数值范围为2#1,对应于十进制数0~9。BCD码不能使用十六进制的A~F(2#1) ...
BCD码(Binary-Coded Decimal?6?0)是二进制编码的十进制数的缩写,BCD码用4位二进制数表示一位十进制数。BCD码各位的数值范围为2#1,对应于十进制数0~9。BCD码不能使用十六进制的A~F(2#1)这6个数字。BCD码本质上是十进制数,因此相邻两位逢十进一。BCD码的最高位二进制数是符号位,负数的符号位为1,正数为0。16位BCD码的范围为–999~+999。下图的拨码开关将显示的数字转换为4位二进制数。用12个数字量输入点读取的是3位BCD码,它的值为2#01,即十六进制数16#829。BCD码没有单独的表示方法,而是借用了十六进制的表示方法,因此二者很容易混淆。下图是S7-300/400的BCD码和整数的相互转换指令,可以看到在指令中BCD码均用十六进制的形式表示。在程序中,怎么知道一个数字是BCD码还是十六进制数呢?1)看数据的来源和用途。BCD码一般用于输入和输出,例如来自拨码开关的数据是BCD码,送给显示楼层的译码器芯片的是BCD码。2)看手册的规定,例如数据类型DATE_AND_TIME中的日期和时间值是BCD码,计数器的预设值PV和当前计数值CV_BCD为BCD码。怎样监视BCD码?在变量表和程序状态监控中,用十六进制格式监视BCD码。怎样输入BCD码?从上图可以看出,BCD码用十六进制格式输入,其最高位(符号位)为16#F(2#1111)。BCD码的低3位各位只能是0~9,如果是16#A~16#F则会出错。计数器的预设值PV是0~999的BCD码,可以用格式为C#的常数(C#1~C#999)作为计数器的预设值。下图用MW42提供计数器的预设值PV,如果用MOVE指令将十进制数348(对应的十六进制数为16#15C)传送给MW42,进入RUN模式时,操作系统将它转换为BCD码时出错(16#15C不是BCD码),不能切换到RUN模式。输入预设值348时,应改为将C#348传送给MW42,它会自动地变为W#16#348,当然也可以直接输入16#348。没有必要用I_BCD指令将348转换为BCD码W#16#348后,再传送给MW42。在看手册时说BCD码和16进制都可以用16#表示如果现在装载一个数&BR& L 16#296 如果是BCD码表示十进制296&BR& 如果是十六进制表示十进制663&BR& 系统是怎样区分那个数是BCD码还是十六进制的。1. BCD 码是用2进制表示的十进制数,如果从最右端每4位转换成16进制数,则BCD 码也可以表示成16进制,例如:16#123 , 转换成二进制应该是 2#10 00112. 系统是怎样区分那个数是BCD码还是十六进制的。这取决于使用的指令。例如: STEP7 中S5 定时器中的设定值,就是BCD数,而不是16进制数。指令的规定与设计在最初一旦被定下来之后,就不能再修改。例如同样是定时器, 在GE 90-30 的PLC 中,它的设定值就是10进制数,而不是16进制数。3 . 在每一个指令中都有使用的数据类型的规定。在那里,你就知道该使用16进制数还是BCD码了, 先列表如下:WORD 可以是2进制数,或者16进制数,或者BCD码。DWORD 可以是2进制数,或者16进制数,或者10进制数。然而,INT , DINT 只能是10进制数或者16进制数。参考出处:STEP7 中的帮助,在索引项的"输入要查找的关键字"中输入: INTPLC本身是不用区分的,我觉得在通讯的时候比较有用到;比如上位机采集200的时间的时候,200提供的是BCD码的时间;而上位机跟200对时的时候也需要给200BCD码的时间。主要还是编程的时候,处于省时省力的考虑吧。
转载请注明本文地址:
上一篇:下一篇:
Powered by &
这里是—这里可以学习 —这里是。
栏目导航:4位压缩bcd码转换成二进制数用汇编怎么实现?_百度知道
4位压缩bcd码转换成二进制数用汇编怎么实现?
提问者采纳
压缩BCD码4位表示一位十进制数(0~9),先将其转为十进制数,再将十进制数转为二进制数。
提问者评价
其他类似问题
二进制数的相关知识
等待您来回答
为您推荐:
下载知道APP
随时随地咨询
出门在外也不愁BCD码怎么转换成标准二进制形式_百度文库
两大类热门资源免费畅读
续费一年阅读会员,立省24元!
评价文档:
喜欢此文档的还喜欢
BCD码怎么转换成标准二进制形式
阅读已结束,如果下载本文需要使用
想免费下载本文?
把文档贴到Blog、BBS或个人站等:
普通尺寸(450*500pix)
较大尺寸(630*500pix)
你可能喜欢二进制数转换成为用8421BCD码的程序
钱晓捷之微辅网
二进制数转换成为用8421BCD码的程序
&&&&&(钱晓捷主编教材:新版和第2版“汇编语言程序设计”习题4.21)
&&&&&编程把一个16位的二进制数转换成为用8421BCD码表示的5位十进制数。转换算法&为:用二进制除以10000为万位,再用余数除以1000得千位,依次用余数除以100,10,1,得到百位,十位和个位。
&&&&&下面得程序对不?
&&&&&.model&small &&&&&.stack &&&&&.data &&&&&bufx&dw&1234h &&&&&bufy&dw&? &&&&&bufz&dw&? &&&&&.code &&&&&.startup &&&&&mov&bx,10000 &&&&&mov&ax,bufx &&&&&mov&cx,5 &&&&&again:&cwd &&&&&div&bx &&&&&push&ax &&&&&push&dx &&&&&&&and&al,0fh &&&&&&&add&al,30h &&&&&&&mov&dl,al &&&&&&&mov&ah,02h &&&&&&&int&21h &&&&&&&pop&dx &&&&&&&pop&ax &&&&&mov&bufy,dx &&&&&mov&ax,bx &&&&&cwd &&&&&mov&bufz,10 &&&&&div&bufz &&&&&mov&bx,ax &&&&&mov&ax,bufy &&&&&loop&again &&&&&done:.exit&0 &&&&&end
&&&&&你将结果进行了输出,还是不错的,程序应该是正确的。你可以进行汇编、连接后运行,将输出结果进行比较。 &&&&&当然,可以改进。例如程序中push&ax和pop&ax可以去掉。还可以考虑不显示前导0等。
16位段和32位段
16位段和32位段
新版汇编习题4.18问题
DOS的返回代码
16位段和32位段
新版汇编习题4.18问题
DOS的返回代码
子程序库的使用问题

我要回帖

更多关于 8421bcd码化成十进制 的文章

 

随机推荐