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

9. Команды ассемблера. Назначение и примеры команды передачи данных, арифметических, логических команд и сдвигов. Команды передачи управления.

Команды передачи данных, mov ор1, ор2 команды передачи данных, может пересылать байты или слово.

Нельзя пересылать mov dx,al т.к. dx- слово, ах - бит. Работа со стеком команда: push op – сохраняет значение в стеке, рор ор извлекает из стека. Команды перестановки данных xchg,ор. Команды загрузки исполнительного адреса lea r16, mem16 команда вычисляет исполнительный адрес операнда и записывает его в регистр РОН. lеа аналог mov отличие состоит в том что lea записывает сам адрес указанный в команде, а mov значение, содержащейся в ячейки с этим адресом.

Команды перекодировки ХLAT действие заключается в том, что содержание байта памяти, адрес которой равен текущему значению регистра в bх и аl записывается в регистр АL

Арифметические операции Аdd ор1,ор2 сложение; аdc ор1,ор2 сложение с переносом, inc ор увеличение на единицу, sub ор1,ор2 - вычисление, sab ор1,ор2 вычисление с займом; dec ор - уменьшение на ед.; neg ор инвертация; cmp ор1 .ор2 (аналог вычитания только результат не сохраняется); mul ор умножение целых без знака; imul ор умножение целых со знаком; div ор деление без знака; idiv ор деление со знаком.

Логические операции And - конъюнкция, логическое умножение, используется для наложения маски; or -дизъюнкция, логическое сложение; xor - исключающее или, используется для инвертирования битовыхсостояний (сложение по модулю); not - отрицание, инвертирует все биты (mov аl. 1100b; not al; al=0011b);

test - проверка, аналог and за исключением того. что результат не запоминается.

Команды сдвигов имеют два операнда 1-ый рассматривается как набор битов, которые должны сдвигаться, второй определяет, на сколько надо сдвинуть первый операнд. Результат записывается вместо первого операнда.

SHL логический сдвиг с конца, добавляется 0 бит, сдвинутый бит записывается в CF. Сдвиг вправо SHR аналогично SHL. только сначала.

Арифметический сдвиг влево SAL ор1,ор2 , сдвиг вправо SAR ор1,ор2 (аналог логического сдвига) уходящий бит записывается в СF затем левый бит, восстанавливает свое значение.

Циклический сдвиг ROL ор1, ор2 влево, вправо ROR все биты двигается влево (вправо) причем самый первый (последний бит возвращается в операнд с правого (левого) конца и записывается в флаг СF.

Команды передачи управления. Переходы бывают условные и безусловные.

Передача может быть: внутри сегмента CS:IP изменение ячеек IP. Межсегментный переход, меняются

значения CS, IP. JMP disp переход по адресу (без условный переход). Переход по условию j (а – выше числа без знака. b - ниже числа без знака, g - больше со знаком, i - меньше со знаком, z - равно нулю, е - равно , n - отрицает). Работа с процедурами: <имя процедуры>proc <параметры> <тело процедуры> <имя процедуры> Endp. Вызов процедуры call < имя процедуры> возвращение из процедуры ret.

Циклы Loop <метка> если надо повторит несколько раз. В качестве счетчика используется регистр сх, т.е.команда выполняется пока счетчик не равен определенному значению. LOOPE/LOOOPZ данные команды выполняются пока равно 0 или пока не равно 0, с известным числом повторений, из которой возможен досрочный выход, когда заставляет повторять цикл сх раз.