非压缩的BCD调整指令
在8086处理器中,有两种主要的非压缩BCD调整指令:加法调整指令AAA和减法调整指令AAS。这些指令用于对AL寄存器中的数据进行BCD(二进制编码十进制)格式的加减操作,并根据结果调整标志位。
加法调整指令 (AAA): 该指令将AL寄存器的值加上6(相当于在BCD格式下增加了一个单位),并将结果存储回AL中。同时,它还会检查AL的值是否在0到9之间,并在AF标志位上设置相应的值来表示操作的结果。如果AL的值在0到9之间且AF为0,则AL的4~7位将被设置为0,CF(进位标志)将保持不变;如果AL的值大于9或者AF为1,则AL的值会减去6,同时AH寄存器的值也会相应地加减1,并且AF和CF标志位的值将被设置为1。
减法调整指令 (AAS): 与AAA类似,但该指令执行的是减法操作。它将AL寄存器的值减去6(相当于在BCD格式下减少了一个单位),并将结果存储回AL中。同样地,它会根据AL的值和AF标志位来设置标志位的值。如果AL的值在0到9之间且AF为0,则AL的4~7位将被设置为0;如果AL的值大于9或者AF为1,则AL的值会加上6,同时AH寄存器的值也会相应地加减1,并且AF和CF标志位的值将被设置为1。
注意事项:
- 这些指令隐含的操作寄存器是AL(累加器)。
- 它们紧接在加减法指令之后使用。
- 除了AF(辅助进位标志)和CF(进位标志)外,对其它条件标志位没有定义。
用户评论