二进制编码十进制(BCD)数的表示与运算
1. 引言
二进制编码十进制(BCD)表示法在存储多位整数时非常有用,例如金融记录。与2的补码表示法相比,BCD值更容易与ASCII格式相互转换,但80x86架构中只有少数指令可用于BCD数的算术运算。本文将介绍BCD表示方案以及用于BCD数的80x86指令,包括将BCD表示转换为相应ASCII表示的代码,以及一些BCD算术运算的过程。
2. 压缩BCD表示法
压缩BCD表示法每个字节存储两个十进制数字,高4位存储一个数字,低4位存储另一个数字。例如,位模式01101001表示十进制数69,其中0110表示6,1001表示9。需要注意的是,同样的位模式在十六进制中也写作69,但如果将其视为有符号或无符号二进制整数,对应的十进制值是105。
通常使用多个字节来存储一个数字,有多种方案可供选择,有些使用固定数量的字节,有些则具有可变长度,并将长度字段作为表示的一部分。数字的位模式通常包含一个或多个位来指示数字的符号。
Microsoft Macro Assembler提供了DT指令,可用于定义一个10字节的压缩十进制数。例如:
DT 123456789
将预留10个字节的存储空间,初始值(十六进制)为:
89 67 45 23 01 00 00 00 00 00
字节按低到高的顺序存储,但每个字节内的十进制数字按正序存储。第10个字节用于指示整个数字的
超级会员免费看
订阅专栏 解锁全文
2

被折叠的 条评论
为什么被折叠?



