是否有任何程序可以在不使用任何临时寄存器的情况下交换微处理器 8085 中的两个数字?我们都知道 C 编程中的相同问题可以通过以下方式完成
A=A+B;
B=A-B;
A=A-B;
这里第一行和最后一行是可执行的,但第二行不能在 8085 MP 中实现,因为结果将始终存储在累加器中。那么还有其他可能吗?
是否有任何程序可以在不使用任何临时寄存器的情况下交换微处理器 8085 中的两个数字?我们都知道 C 编程中的相同问题可以通过以下方式完成
A=A+B;
B=A-B;
A=A-B;
这里第一行和最后一行是可执行的,但第二行不能在 8085 MP 中实现,因为结果将始终存储在累加器中。那么还有其他可能吗?
维基百科说有一个 XCHG 指令:
XCHG 操作交换 HL 和 DE 的值。
所以你想在没有临时变量的情况下交换数字。那么有几种方法可以做到这一点:
正如您所提到的,您可以使用加法和减法方法,即。A = A+B, B = A - B 和 A = A - B 但是,正如您指出的那样,8085 使用累加器来执行操作,因此我们可以稍微不同地实现它:
MVI A, <value 1>
MVI B, <value 2>
ADD B
MOV A,C
SUB B
MOV A,B
MOV C,A
SUB B
现在您将找到要交换的值
另一种方法是使用 XCHG 命令
x = x xor y
y = x xor y
x = x xor y