WorldodTech

Регистрация


Технологии вокруг нас

Скорость Wi-Fi сегодня

Новая 3D технология ...

Команды пересылки данных

Рис. 26. Принцип работы команды pusha

Рис. 26. Принцип работы команды pusha

4. pushaw – почти синоним команды pusha В чем разница? Атрибут разрядности может принимать значение use16 или use32. Рассмотрим работу команд pusha и pushaw при каждом из этих атрибутов:

1) use16 – алгоритм работы pushaw аналогичен алгоритму pusha;

2) use32 – pushaw не изменяется (т. е. она нечувствительна к разрядности сегмента и всегда работает с регистрами размером в слово – ах, сх, dx, bx, sp, bp, si, di). Команда pusha чувствительна к установленной разрядности сегмента и при указании 32-разрядного сегмента работает с соответствующими 32-разрядными регистрами, т. е. еах, есх, edx, ebx, esp, ebp, esi, edi.

5. pushad – выполняется аналогично команде pusha, но есть некоторые особенности.

Следующие три команды выполняют действия, обратные вышеописанным командам:

1) рора;

2) popaw;

3) popad.

Группа команд, описанная ниже, позволяет сохранить в стеке регистр флагов и записать слово или двойное слово в стеке. Отметим, что перечисленные ниже команды – единственные в системе команд микропроцессора, которые позволяют получить доступ (и которые нуждаются в этом доступе) ко всему содержимому регистра флагов.

1. pushf – сохраняет регистр флагов в стеке.

Работа этой команды зависит от атрибута размера сегмента:

1) use 16 – в стек записывается регистр flags размером 2 байта;

2) use32 – в стек записывается регистр eflags размером 4 байта.

2. pushfw – сохранение в стеке регистра флагов размером в слово. Всегда работает как pushf с атрибутом use16.

3. pushfd – сохранение в стеке регистра флагов flags или eflags в зависимости от атрибута разрядности сегмента (т. е. то же, что и pushf).

Аналогично, следующие три команды выполняют действия, обратные рассмотренным выше операциям:

1) popf;

2) popftv;

3) popfd.

И в заключение отметим основные виды операции, когда использование стека практически неизбежно:

1) вызов подпрограмм;

2) временное сохранение значений регистров;

3) определение локальных переменных.

Перейти на страницу: 1 2 3 4