24. Команды работы со стеком

Для организации работы со стеком существуют специальные команды записи и чтения: Команда PUSH выполняет запись значения «источник» в вершину стека: PUSH источник Алгоритм работы этой команды, включает два действия: Значение SP уменьшается на 2 Значение источника записывается по адресу, указываемому парой SS:SP. Команда POP выполняет запись значения из вершины стека по месту, указанному операндом «приемник»[…]

11. Арифметические команды.

Арифметические команды делятся на 2 группы: Двоичной арифметики. Десятиной арифметики. Все арифметические команды изменяют флаги состояний CF, ZF, SF, AF, OF. Команды двоичной арифметики: инкремент/декремент (увеличение/уменьшение операнда на 1) INC/DEC регистр/память сложение/вычитание ADD/SUB получатель, источник меняет знак операнда на противоположный. NEG регистр/память сложение/вычитание дополнительно прибавляет/вычитает от результат флаг CF ADC/SBB получатель, источник умножение беззнаковое/умножение знаковое[…]

29. Команды побитовой обработки. Типы операндов. Логические операции. Команды доступа у отдельным битам.

Команды побитовой обработки: Позволяют анализировать или изменить часть операнда Выполняются быстрее Имеют 1-3 операнда Операндом может быть: имя регистра, адрес ячейки оперативной памяти, непосредственный операнд Операнды имеют размер: байт, слово, двойное слово По назначению делятся на: логические, доступа к отдельным битам и команды сдвига Логические операции Все команды, кроме NOT, изменяют флаги zf, cf, of,[…]

30. Команды сдвига и циклического сдвига

Логический сдвиг операнда влево/вправо SHL операнд, количество_сдвигов SHR операнд, количество_сдвигов SHL и SHR сдвигают биты операнда (регистр/память) влево или вправо соответственно на один разряд и изменяют флаг переноса cf. При логическом сдвиге все биты равноправны, а освободившиеся биты заполняются нулями. Указанное действие повторяется количество раз, равное значению второго операнда. Пример: ; al = 01011011 (двоичное)[…]

31. Команды сдвига двойной точности

shld операнд_1, операнд_2, счетчик_сдвигов — сдвиг влево двойной точности. производит сдвиг влево операнда_1, заменяя освободившиеся справа биты значениями битов операнда_2, которые были бы вытолкнуты из него сдвигом влево на то же количество битов. Количество сдвигаемых бит определяется значением счетчик_сдвигов, которое может лежать в диапазоне 0…31. Это значение может задаваться непосредственным операндом или содержаться в регистре[…]

12. Команды расширения

В программах довольно часто нужно переслать меньшее по длине значение в большую по длине переменную или регистр. В качестве примера предположим, что нам нужно загрузить 16-разрядное беззнаковое значение, хранящееся в переменной count, в 32-разрядный регистр ЕСХ. Самое простое решение этой задачи заключается в том, что вначале нужно обнулить регистр ЕСХ, а затем загрузить 16-разрядное значение[…]

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

Одна из основных команд языка ассемблер – это команда пересылки. С её помощью можно записать в регистр значение другого регистра, константу или значение ячейки памяти, а также можно записать в ячейку памяти значение регистра или константу. Команда MOV копирует данные из операнда-источника в операнд-получатель. Она относится к группе команд пересылки данных (data transfer) и используется[…]

21. Цепочечные команды

Пересылка цепочки: MOVS адрес_приемника, адрес_источника — переслать цепочку (MOVe String); MOVSB — переслать цепочку байтов; MOVSW — переслать цепочку слов; MOVSD — переслать цепочку двойных слов. Команда копирует байт, слово или двойное слово из цепочки, адресуемой ds:si, в цепочку, адресуемую ds:si (Для MOVS адреса приемника и источника указываются при вызове ) Алгоритм работы: выполнить копирование[…]

22. Выполнение команд с префиксами. Направление обработки цепочек.

Для организации циклической обработки цепочек элементов используются префиксы повторения: REP цепочечная_команда Команда повторяется до тех пор, пока содержимое сх не равно нулю. REPE/REPZ цепочечная_команда Префиксы являются абсолютными синонимами. Команда повторяется до тех пор, пока содержимое сх не равно нулю и zf =1. REPNE/REPNZ цепочечная_команда Префиксы являются абсолютными синонимами. Команда повторяется до тех пор, пока содержимое[…]

10. Классификация команд ассемблера.

Команды(операции) – инструкции которые может выполнять процессор. Структура оператора ассемблера: [имя_метки:] код_оператора [операнды][;комментарии] Количество операндов