十进制调整指令
首先,我们介绍一下组合BCD码和分离BCD码。
BCD码:用4位二进制数表示1位十进制数的编码。例如十进制数9用BCD码表示为1001.有人会问BCD码和普通二进制数表示有何区别? 答案是BCD码的每4位表示范围为0~9,而不是0 ~15了。也就是说BCD码和十进制数对应,而一般01机器码是和十六进制数对应的。
①组合BCD码:1个字节表示两位十进制数。例如十进制数29用组合BCD码对应为00101001.
②分离BCD码:1个字节表示1位二进制数。例如十进制数29用组合BCD码对应为0000001000001001.
如何理解十进制调整指令呢?
在了解了BCD码后,我们介绍十进制调整指令。
在计算机中,通常数据运算都是以十六进制来进行的,因为1111最大能表示16个数。下图为BCD码调整指令的原理。有助于初学者理解,一定要知道十进制数是为了方便人们辨识,人们所习惯的数制,但是在机器语言中,通常使用十六进制数。
①BCD码的加法运算调整指令AAA/DAA
DAA:两个组合BCD码相加的和,该和一定事先放置于AL中,DAA能够将调整其获得正确的分离BCD码并放入AL中。
AAA:两个分离BCD码相加的和,该和一定事先放置于AX中,DAA能够将去调整其获得正确的组合BCD码并放入AX中。
说明:
①DAA、AAA指令要紧跟在加法指令ADD或ADC指令之后使用。
②指令的使用条件是AF、CF以及非法码,如果不满足其中的任何条件,则指令不能正确执行。