如何把ASCII码转换成BCD码

作者&投稿:索祥 (若有异议请与网页底部的电邮联系)
如何把ASCII码转换成BCD码~

bcd码通常是指8421码就是将十进制的数以8421的形式展开成二进制,大家知道十进制是0~9十个数组成,这十个数每个数都有自己的8421码
bcd码是四位二进制码,也就是将十进制的数字转化为二进制,但是和普通的转化有一点不同,每一个十进制的数字0-9都对应着一个四位的二进制码,对应关系如下:十进制0对应二进制0000;十进制1对应二进制0001.......91001接下来的10就有两个上述的码来表示10表示为00010000也就是bcd码是遇见1001就产生进位,不象普通的二进制码,到1111才产生进位10000
压缩bcd码与非压缩bcd码的区别——压缩bcd码的每一位用4位二进制表示,一个字节表示两位十进制数。例如10010110b表示十进制数96d;非压缩bcd码用1个字节表示一位十进制数,高四位总是0000,低4位的0000~1001表示0~9.例如00001000b表示十进制数8.
百度百科http://baike.baidu.com/view/45179.htm?fr=ala0_1_1
bcd码代表数字0~9,ascii码中也有代表数字0~9的码元,可以查看ascii表,'0'=48,'1'=49,依次类推。
先把压缩bcd拆开变成非压缩bcd,然后加48就是ascii中的0~9了!

ASCII的数字转换为BCD码数值很简单的,直接减30H就可以了。比如:
'1'-0x30=1;
也就是:
bcd=ascii-0x30;

首先将ASCII码化成十进制,想直接到BCD不行
BCD码有8421、2421等 一般多用8421型的
是什么意思呢,举个例子(8421):比如8(BCD)=1000 即8X1+4X0+2X0+1X0=8
(2421):8(BCD)=1110
道理都是一样的。单位的十进制就像上面一样,
那么像2156【BCD (8421)】=0010 0001 0101 0110

以上是有权BCD码
还有就是无权BCD码,像余三码,格雷码等, 其中余三码用的普遍一些
像余三码 就是在有权码的基础上加3即0011 B
举个例子:456(余三码)=0111 1000 1001 什么意思?
就是4(8421) +0011=0100+0011=0111
以此类推,后面都是一样 。

像汇编语言,有人说可以,但我不知道该从哪方面说。我不否认,因为汇编语言写出来之后是经过计算机处理的,计算机的程序是经过人大脑的,理性思维,这个转换过程一定要经过十进制的转换,不过,在计算机中,十进制都以二进制的形式存储的,但这个转换过程,在设计时,头脑要考虑的。也就是说,在汇编语言写进微机中隐形中有十进制的转换 。

ASCII码转换为BCD码的代码:
int A2BCD(BYTE * pDst,const char * pSrc)
{
ASSERT(pDst != NULL && pSrc != NULL);
int nLen = (strlen(pSrc)+1)/2;
for(int i = strlen(pSrc)-1; i > 0; i -= 2)
{
int n1 = pSrc[i] - '0';
int n2 = pSrc[i-1] - '0';
pDst[i/2] = (n1&0xFF)|(n2<<4);
}
if(strlen(pSrc)%2 != 0)
{
pDst[0] = pSrc[0]-'0';
}
return nLen;
}

Code Segment
Assume CS:Code,DS:Code
BCD_Number db 45h,32h,56h,98h
dw 6 dup(?)
Start: push cs
pop ds
push cs
pop es ;使数据段、附加段与代码段同段
cld
lea si,BCD_Number
lea di,BCD_Number[8]
mov cx,2
rep movsw ;把这4个字节的压缩BCD码保存到与其相距8个字节的后续单元
lea si,BCD_Number[8]
lea di,BCD_Number
mov cx,4
BCD_ASCII: lodsb
push cx
mov cx,4
xor ah,ah
shl ax,cl
shr al,cl
or ax,3030h
xchg ah,al
stosw
pop cx
loop BCD_ASCII
Exit_Proc: mov ah,4ch ;结束程序
int 21h

Code ENDS
END Start


ascii码怎么换算
对于大写字母和小写字母的ASCII码值,它们之间存在固定的差值,即32。因此,可以通过将大写字母的ASCII码值加上32来得到对应的小写字母。例如,字母A的ASCII码值为65,小写字母a的ASCII码值为97,可以通过将65加上32得到97。另外,也可以通过编程语言进行ASCII码的转换。例如,在C++中,可以使用加法运算符...

请问ASCII码是怎么转换的?
1、首先,定义两个整型变量a和A,保存相应字母的ASCII码。2、定义一个字符变量ch,保存需转换的字符。3、给字符变量ch赋初值,值为小写字母a。4、把字符变量中的值,赋给整型变量a,实现ASCII码的转换。5、将英文字母a的ASCII码,在输出窗口中输出。6、然后,字符变量中的字符,更改为大写字母A。7...

如何将ASCII码转换为字符并输出?
步骤一:设置舞台,定义一个整数变量,装载待转换的ASCII码,它是字符世界的编码密码。接着,我们进行关键操作:(转换进行时),将的值精准地赋予变量z,如同魔法般,ASCII码化身为字符形态。目睹这一幕,输出窗口中立刻显现出这神奇的转变,字符在屏幕上跳跃着诉说着ASCII码的故事。然后,进入大写世界,我...

汉字的ASCII码是怎样转换成十进制数字
1)ASCII码转十进制即按二进制转十进制方法,按权展开求和。[1]例:0110110b转十进制=0*2^6+1*2^5+1*2^4+0*2^3+1*2^2+1*2^1+0*2^0=542)十进制整数转二进制数:“除以2取余,逆序排列”(除二取余法)[1]ASCII(AmericanStandardCodeforInformationInterchange,美国标准信息交换代码...

字符(串)转换ASCII码
编码转换:字符与字节的舞蹈<\/字符转换相对直观,Python中的ord()函数能将字符转换为ASCII码。而字符串的转换就显得多元,Python3默认使用Unicode编码,一个字符可以代表全球各种语言的字符,但空间需求是ASCII的两倍。UTF-8编码因此应运而生,它根据字符的复杂度灵活地占用1到6个字节,英文字符通常占1字节...

如何进行ASCII码与十进制的相互的转换
1、英文字母是字符型,ASCII码十进制的,因此只需要将字符型转换为十进制,在输出函数的时候强制转换类型。2、ASCII是以十六进转表示的,所以就是十进制转十六进转;比如1610的十进转要转换为十六进转;过程如下:1610\/16=10010(A);100\/16=64;6\/16=06;所以,1610(10进制)=64A(16进制)。3、...

如何将ascii码98转化成对应的十进制数?
可以先将42H(16进制)转为十进制,也就是66.再用66+23=98.(在ASCII码中同一个字母的大小写相差32,又因为其中A为65,a为97,故小写字母偏大所以是加法)再将十进制98转化为16进制,也就是62H。(可以先将十进制98转为二进制,即1100010,再将二进制转为16进制,具体为四位一组,不够四位...

ASCII码是怎么转换成十进制的呢?
有HEX指令,是将ASCII码转成16进制,没有转成十进制的。如果单是0到9的数据,16进制和10进制是一样的呀。这个用梯形图搭起来很烦的如果用信捷的就好了直接一个C函数就OK了。-9个数字的ASCII对应的十六进制是30-39,对应的十进制是48-57,因此只要将寄存器中的数值减去48就是ASCII码对应的数值了...

ascii码是如何换算成ASCII码的?
大写字母和小写字母的ASSCII值差32,利用ASSCII值来转换。小写字母的ASCII码比大写字母的ASCII码大32。比如,大写字母A的ASSCII值是65,那么zhi小写a就是65+32=97。依次类推d其他字母。如果用C++来写:#include<iostream.h> void main(){ char c,c1; cin>>c;\/\/从键盘输入字母c1=c+32;\/\/转换...

C语言ASCII码与字母如何转换?求详解
1、首先,定义两个字符变量z和Z,用以保存转换的字符。2、接着,定义一个整型变量n,保存用来转换的ASCII码。3、把n的值赋给变量z,实现字符的转换。4、输出窗口中,输出将ASCII码转换为的字符。5、给变量n重新赋值,其值为大写字母的ASCII码。6、将ASCII码转换为对应的大写英文字母,并在输出窗口...

西林区13295857076: 请问ASCII码要如何转为BCD码? -
仇重抗癌: ASCII的数字转换为BCD码数值很简单的,直接减30H就可以了.比如: '1'-0x30=1; 也就是: bcd=ascii-0x30;

西林区13295857076: ascii码到十进制(BCD)的转换 -
仇重抗癌: 其实ascII码是很容易得到的,书上一般都会有那个表格,对应的你可以读出你所需的字符所对应的二进制代码,当你把8位二进制代码写出时,我们就可以转换为BCD码了,具体方法是:8,4,2,1.比如我的二进制码为:01001101 则BCD码为一...

西林区13295857076: 51单片机,ASCII码要如何转位BCD码? -
仇重抗癌: 如果是数字的话,那么可以这样来转换:ASC2BCD: CLR C SUBB A,#30H RET

西林区13295857076: 十进制ASCII码转BCD码? 汇编语言 -
仇重抗癌: code segment assume cs:code start: push cs pop ds mov dx,offset tips mov ah,9 int 21h mov si,3500h;十进制ASCII存于3500H起单元 mov di,350ah;BCD后再存于350AH起内存 mov cx,10;只够输入10个字符 Q0:mov ah,1 int 21h cmp al,'0' jb Q1 ...

西林区13295857076: bcd码是什么意思?如何与ascii码转化? -
仇重抗癌: 计算机内毫无例外地都使用二进制数进行运算,但通常采用8进制和十六进制的形式读写.对于计算机技术专业人员,要理解这些数的含义是没问题,但对非专业人员却不那么容易的.由于日常生活中,人们最熟悉的数制是十进制,因此专门规...

西林区13295857076: 51单片机汇编语言把ASCII码转换为压缩BCD码 -
仇重抗癌: mov R6,#30H mov R7,#0 mov DPTR,#2000H mov R2,10 L1: movx A,@DPTR inc DPTR anl A,#0FH swap A mov R0,A movx A,@DPTR inc DPTR anl A,#0FH orl A,R0 push DPH push DPL mov DPH,r6 mov DPL,r7 movx @DPTR,A inc DPTR mov R6,DPH mov R7,DPL pop DPL pop DPH djnz R2,L1

西林区13295857076: JavaScript,十六进制的ASCII转成BCD格式,怎么转? -
仇重抗癌: //转换成16进制的ASCII码组合如下 function transStr(str){ var result=""; for(var i=0;i result+=str.charCodeAt(i).toString(16)+" "; } return result.trim(); }//但你说的最终结果,完全没看出来和bcd码有什么关系.

西林区13295857076: 设从键盘接受的一个十进制数的ASCII码在AL中,试编写有关程序段把它转换成非压缩BCD码的形式 -
仇重抗癌: 一个十进制数的ASCII码在AL中,即:AL = 30H ~ 39H.要把它转换成非压缩BCD码,去掉前面的 3 即可,指令如下:SUB AL, 30H 执行下面的指令,也可以:AND AL, 0FH 甚至,执行这个也行:ADD AL, 0D0H 仅仅用一条指令就够了,谈不上编写程序.

西林区13295857076: 汇编语言 怎样把一个已知字符的assii值转化为其对应的字符 -
仇重抗癌: 1.如果是每一个对应的字符都要转化的话你可以对具有相同特征的字符进行分类~~~以转化为BCD码为例~~~~'0'的ACICC是 '0011 0000','1'的是'0011 0001'.......'9'是'0011 1001'在转换的时候把高四位屏蔽就是相对的BCD~~ 2.每一个不同的规律用一个不同的算法~~~然后分别写出子程序 ~~在开始判断一下~~~看满足什么条件~~~~然后分别进入不同的子程序执行~~ 我把大概的流程图说了一下~~

西林区13295857076: 将ASCII码转换为非压缩BCD码的汇编程序 -
仇重抗癌: aswapb proc near cmp ah,'b' je bcd ascii:mov al,[si] or al,30h mov [si],al inc si loop ascii jmp exit bcd:mov al,[si] and al,0fh mov [si],al inc si loop bcd exit:ret aswapb endp EA给SI,长度给CX,AH=A(除'b'之外的任意字符)为BCD转ASCII,AH=B为ASCII转BCD 未调试过,如有错误请指正!

本站内容来自于网友发表,不代表本站立场,仅表示其个人看法,不对其真实性、正确性、有效性作任何的担保
相关事宜请发邮件给我们
© 星空见康网