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

时间:2016-04-22 02:36:56

标签: 8085

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

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

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

3 个答案:

答案 0 :(得分:1)

Wikipedia says有一条XCHG指令:

  

XCHG操作交换HL和DE的值。

答案 1 :(得分:0)

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

  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命令

答案 2 :(得分:-1)

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