ASCII和BCD算术运算详解
1. 引言
在处理数字数据时,通常采用二进制表示法,并使用一些针对二进制数据的算术指令进行操作。然而,当数字从键盘输入或显示时,它们是以ASCII形式存在的。这就需要在输入时将数字从ASCII转换为二进制,在输出时再将二进制转换为ASCII。
graph LR A[输入数据(ASCII)] --> B[ASCII到二进制转换] B --> C[二进制处理] C --> D[二进制到ASCII转换] D --> E[输出数据(ASCII)]在某些简单的数字处理应用中,如单次加法,进行这两次转换的开销可能并不值得。此时,以十进制形式处理数字可能更高效。另外,以十进制形式处理数字还能使用任意数量的数字,并控制舍入误差,这在金融记录中表示美元和美分等场景中非常重要。十进制数字可以用ASCII或二进制编码的十进制(BCD)两种形式表示。
2. ASCII表示法
在ASCII表示法中,数字以ASCII字符串的形式存储。例如,数字1234表示为31 32 33 34H,其中31H是字符1的ASCII码,32H是字符2的ASCII码,依此类推。对以ASCII形式表示的十进制数字进行算术运算需要特别注意,有两条指令可用于处理这些数字:
-aaa— 加法后进行ASCII调整
-aas— 减法后进行AS