Как поменять местами содержимое 2 регистров, используя push и pop? - PullRequest
1 голос
/ 04 апреля 2011

Если мы рассмотрим два регистра ax и bx, как мы можем поменять их содержимое в Intel IA-32, просто используя push и pop?Я не могу использовать xchg.

Это не вопрос для домашней работы, я проверяю для экзамена.

Ответы [ 3 ]

3 голосов
/ 04 апреля 2011

Вы можете нажать один раз и использовать инструкцию mov, или нажать два раза. Первый выглядит так:

push ax
mov ax, bx
pop bx

Если вы хотите нажать два раза, это (как ответили другие):

push ax
push bx
pop ax
pop bx
1 голос
/ 04 апреля 2011

Должно быть стандартным использованием стека.Push A, Push B, Pop to A, Pop to B.

Это работает для IA-32, потому что его pop не только выталкивает стек, но и выдает значение, которое он выталкивает.Это не всегда так.Стандартная библиотека шаблонов для C ++ имеет всплывающее окно, которое просто манипулирует стеком, и вам нужна другая команда для доступа к вершине стека

1 голос
/ 04 апреля 2011
push ax
push bx
pop ax
pop bx

?

...