在 8085 微处理器中交换两个数字,而不使用临时变量



是否有任何程序可以在不使用任何临时寄存器的情况下交换微处理器 8085 中的两个数字?我们都知道,C编程中的相同问题可以通过以下方式来完成

A=A+B;
B=A-B;
A=A-B;

这里第一行和最后一行是可执行的,但第二行不能在 8085 MP 中实现,因为结果将始终存储在累加器中。那么还有其他可能吗?

维基百科说有一个XCHG指令:

XCHG 操作交换 HL 和 DE 的值。

所以你想在没有临时变量的情况下交换数字。那么有几种方法可以做到这一点:

  1. 正如您提到的,您可以使用加法和减法来做到这一点,即。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
    

    现在您将找到要交换的值

  2. 另一种方法是使用 XCHG 命令

x = x xor y
y = x xor y
x = x xor y

最新更新