将897.25转换为压缩BCD和非压缩BCD码数是

下面是一个实现根据一个字符串生成BCD码,返回值用malloc分配第一个字节是结果长度(最长为255),高位在前的逻辑

如果你的问题输入长度是固定的,可以去掉所有的长度判斷并且返回值也不需要存储长度。

适用于所有对数字字符按从'0'到'9'连续编码的系统




请编制程序PROG1.ASM其功能是:将连续20個字节的ASCII码(30~39之间)顺序转换成10个压缩BCD和非压缩BCD码。

转换后为 13H58H,……(后面依次有8个压缩BCD和非压缩BCD码)

部分程序已经给出其中原始数据由过程LOAD从文件INPUT1.DAT中读入SOURCE开始的内存单元中,运算结果(要求从RESULT开始存入)由SAVE过程保存到OUTPUT. DAT中请在BEGIN和END之间补充一段源程序,完成要求的功能

对程序必須进行汇编,并与IO.OBJ连接产生PROG1.EXE执行文件最终产生运行结果(无结果或结果不正确均不得分)。

BCD码就是以二进制数表示十进制数以4位二进制数表示1位十进制数,0000~1001表示0~91010~1111六个状态无意义。非压缩BCD和非压缩BCD码以一个字节表示一位BCD码压缩BCD和非压缩BCD码一个字节表示两位BCD码。

●ASCII码與压缩BCD和非压缩BCD码之间的转换

0~9的ASCH码为30H~39H从数字的ASCII码求数字本身,只要用他的ASCII码减去30H即可由两位非压缩BCD和非压缩BCD码构成一个字节的压縮BCD和非压缩BCD码可将高位的BCD码移到高四位,然后与低位的BCD码进行逻辑或(OR)操作即可完成

第一步:分析本程序要求完成的功能。

本程序要求完荿以下功能:

(2)将SOURCE开始的20个ASCII码求出其对应的数值然后转换成压缩的BCD码,依次放在RESULT开始的内存单元中

第二步:用相应汇编程序来实现其功能。

(1)数据的读取和存入题目中已经给出只要完成20个ASCII码到压缩BCD和非压缩BCD的转换即可。

(2)由ASCII码到压缩BCD和非压缩BCD码的转换过程如下:

由于20位ASCII码正恏转换成10个字节压缩BCD和非压缩BCD码不存在某个字节的BCD码只有一位。因此依次从SOURCE开始的内存单元取两个ASCII码前一个转换成压缩BCD和非压缩BCD码的高位,后一个转换成压缩BCD和非压缩BCD码的低位来构成压缩BCD和非压缩BCD码;每两个ASCII码转换成一个字节的压缩BCD和非压缩BCD码直至转换完毕。

我要回帖

更多关于 压缩BCD和非压缩BCD 的文章

 

随机推荐