Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
вопросы по экзамену(Асемблер).doc
Скачиваний:
3
Добавлен:
01.03.2025
Размер:
350.72 Кб
Скачать

25 Вопрос

LEA

(Load Effective Address)

Загрузка эффективного адреса

 

Схема команды: 

lea приемник,источник 

Назначение: получение эффективного адреса (смещения) источника.

Синтаксис Алгоритм работы: алгоритм работы команды зависит от действующего режима адресации (use16 или use32):

если use16, то в регистр приемник загружается 16-битное значение смещения операнда источник;

если use32, то в регистр приемник загружается 32-битное значение смещения операнда источник.

Применение: Данная команда является альтернативой оператору ассемблера offset. В отличие от offset команда lea допускает индексацию операнда, что позволяет более гибко организовать адресацию операндов.

;загрузить в регистр bx адрес пятого

элемента массива mas

.data

mas     db      10 dup (0)

.code

...

        mov     di,4

        lea     bx,mas[di]

;или

        lea     bx,mas[4]

;или

        lea     bx,mas+4

        

22 Вопрос

PUSH

(PUSH operand onto stack)

Размещение операнда в стеке

 

Схема команды: 

push источник 

Назначение: размещение содержимого операнда источник в стеке.

Синтаксис Алгоритм работы:

уменьшить значение указателя стека esp/sp на 4/2 (в зависимости от значения атрибута размера адреса — use16 или use32);

записать источник в вершину стека (адресуемую парой ss:esp/sp).

Применение: Команда push используется совместно с командой pop для записи значений в стек и извлечения их из стека. Размер записываемых значений — слово или двойное слово. Также в стек можно записывать непосредственные значения. Заметьте, что в отличие от команды pop в стек можно включать значение сегментного регистра cs. Другой интересный момент связан с регистром sp. Команда push esp/sp записывает в стек значение esp/sp по состоянию до выдачи этой команды. В микропроцессоре i8086 по этой команде записывалось скорректированное значение sp. При записи в стек 8-битных значений для них все равно выделяется слово или двойное слово (в зависимости от use16 или use32).

my_proc proc    near

        push    ax

        push    bx

;тело процедуры, в которой изменяется содержимое

;регистров ax и bx

...

        pop     bx

        pop     ax

        ret

        endp

POP

(POP operand from the stack)

Извлечение операнда из стека

 

Схема команды: 

pop приемник 

Назначение: извлечение слова или двойного слова из стека.

Синтаксис Алгоритм работы: Алгоритм работы команды зависит от установленного атрибута размера адреса — use16 или use32:

загрузить в приемник содержимое вершины стека (адресуется парой ss:esp/sp);

увеличить содержимое esp/sp на 4 (2 байта) для use32 (соответственно для use16).

Применение: Команда применяется для восстановления содержимого вершины стека в регистр, ячейку памяти или сегментный регистр. Заметим, что недопустимо восстановление значения в сегментный регистр cs.

my_proc proc    near

        push    ax

        push    bx

;тело процедуры, в которой изменяется содержимое

;регистров ax и bx

...

        pop     bx

        pop     ax

        ret

        endp