把源操作数的内容送入内部RAM单元或特殊功能寄存器。.ppt

把源操作数的内容送入内部RAM单元或特殊功能寄存器。.ppt

表 3.2 算术运算指令 表 3.3 影响标志位的指令 表 3.3 影响标志位的指令 (一) 加法指令 1. 普通加法指令 ADD A, Rn ADD A, direct ADD A, @Ri ADD A, #data 例如: 120 和 100 之和为 220, 显然大于 127, 相加时 0 1 1 1 1 0 0 0 120 0 1 1 0 0 1 0 0 100 1 1 0 1 1 1 0 0 220 + 符号位(最高位)由 0 变 1, 两个正数相加结果变负, 实际上它是和数的最高位, 符号位移入了进位标志, 此时位 6 有进位而位 7 无进位, 置位溢出标志OV, 结果溢出。 同样, -120和-100 相加, 结果应为-220, 显然小于-128, 相加时 1 0 0 0 1 0 0 0 -120 1 0 0 1 1 1 0 0 -100 + 1 0 0 1 0 0 1 0 0 -220 符号位由1变为0, 两个负数相加结果变为正数, 这是因为符号位移入进位标志, 位 6 无进位而位 7 有进位, 置位溢出标志OV, 由此可判断结果溢出。 2. 带进位加法指令 ADDC A, Rn ADDC A, direct ADDC A, @Ri ADDC A, #data 这组指令的功能与普通加法指令类似, 唯一的不同之处是, 在执行加法时, 还要将上一次进位标志Cy的内容也一起加进去, 对于标志位的影响也与普通加法指令相同。 3. 增量指令 INC A INC Rn INC direct INC @Ri INC DPTR 这组指令的功能是:将指令中所指出操作数的内容加1。 若原来的内容为 0FFH, 则加 1 后将产生溢出, 使操作数的内容变成 00H, 但不影响任何标志。最后一条指令是对16 位的数据指针寄存器DPTR执行加 1 操作, 指令执行时, 先对低 8 位指针 DPL的内容加 1, 当产生溢出时就对高 8 位指针DPH加 1, 但不影响任何标志。 4. 十进制调整指令 DA A 这条指令对累加器A参与的BCD码加法运算所获得的 8 位结果进行十进制调整, 使累加器A中的内容调整为二位压缩型 BCD码的数。使用时必须注意, 它只能跟在加法指令之后, 不能对减法指令的结果进行调整, 且其结果不影响溢出标志位。 执行该指令时, 判断 A中的低 4 位是否大于 9 和辅助进位标志 AC是否为“1”, 若两者有一个条件满足, 则低 4 位加 6 操作; 同样, A中的高 4 位大于 9 或进位标志 Cy为“1”两者有一个条件满足时, 高 4 位加 6 操作。例如: 有两个 BCD数 36 与 45 相加, 结果应为 BCD码 81, 程序如下: MOV A, #36H ADD A, #45H DA A 这段程序中, 第一条指令将立即数36H(BCD码36)送入累加器A; 第二条指令进行如下加法: 0 0 1 1 0 1 1 0 36 0 1 0 0 0 1 0 1 45 0 1 1 1 1 0 1 1 7B 0 0 0 0 0 1 1 0 06 + + 1 0 0 0 0 0 0 1 81 得结果 7BH; 第三条指令对累加器 A进行十进制调整, 低 4 位(为 0BH)大于 9, 因此要加 6, 得调整的 BCD码 81。 (二) 减法指令 1. 带进位减法指令 SUBB A, Rn SUBB A, direct SUBB A, @Ri SUBB A, #data 这组指令的功能是: 将累加器A的内容与第二操作数及进位标志相减, 结果送回到累加器A中。在执行减法过程中,如果位7(D7)有借位, 则进位标志Cy置“1”, 否则清“0”; 如果位 3(D3)有借位, 则辅助进位标志AC置“1”, 否则清“0”; 如位 6 有借位而位 7 没有借位, 或位 7 有借位而位 6 没有借位, 则溢出标志OV置“1”, 否则清“0”。 若要进行不带借位的减法操作,

您可能关注的文档

文档评论(0)

1亿VIP精品文档

相关文档