2016-04-22 12 views
-1

Есть ли какая-либо процедура для замены двух чисел в микропроцессоре 8085 без использования какого-либо временного регистра? Мы все знаем, что та же самая проблема в программировании C может быть сделано следующим образомПоменять два числа в 8085 Микропроцессор без использования временной переменной

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

Здесь первая и последняя строки являются исполняемыми, но вторая линия не может быть реализована в 8085 МП, как результат всегда будет храниться в аккумуляторе. Так есть ли другая возможность сделать это?

+1

Перед вниз голосования, пожалуйста, укажите причину. –

ответ

-1
x = x xor y 
y = x xor y 
x = x xor y 
+1

И это не страдает той же проблемой аккумулятора? может ли XOR использоваться более свободно, чем ADD/SUB? – Thilo

+0

Я так не думаю. После всей операции, арифметической или логической, результат будет сохранен в Аккумуляторе. –

1

Wikipedia says есть инструкция XCHG:

операция обменивается XCHG значения HL и DE.

+0

Да, что можно сделать. Сохраняя (H) и (D) 00h и помещая значения в (L) & (E) или наоборот, проблема может быть решена. Благодаря:) –

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