
- •«Пермский национальный исследовательский политехнический университет»
- •Цель работы
- •Индивидуальное задание
- •1.Теоретические сведения
- •Основные команды языка Ассемблер
- •Команды пересылки.
- •1) Пересылка данных
- •2) Пересылка адресов
- •4) Пересылка в стек и из стека
- •Арифметические операции.
- •1) Команды счёта
- •2) Арифметические операции над двоичными кодами.
- •3) Команда сравнения:
- •Команды корректировки.
- •Команды логических операций.
- •1) Поразрядные логические операции:
- •2) Команды сдвига
- •Команды передачи управления.
- •Команды организации цикла.
- •Команды вызова процедур и возврата из них.
- •Команды прерываний и возврата из них.
- •Функции ввода/вывода dos.
- •1.Расчетно-графическая часть
- •Листинг программы:
- •Библиографический список
Арифметические операции.
1) Команды счёта
а) Формат команды: INC <приемник>
Содержимое приемника увеличивается на единицу и возвращается в приемник.
б) Формат команды: DEC <приемник>
Содержимое приемника уменьшается на единицу и возвращается в приемник
Примеры:
INC AL
DEC [BX](Рисунок 3)
Рисунок 3-DEC[BX]
2) Арифметические операции над двоичными кодами.
а) Формат команды: ADD <приёмник>, <источник> - сложение
Действие: приемник := приемник + источник
б) Формат команды: SUB <приёмник>, <источник> - вычитание
Действие: приемник := приемник + источник
в) Формат команды: ADC <приёмник>, <источник>
Действие: аналогично ADD, но к сумме добавляется флаг СF.
г) Формат команды: SВB <приёмник>, <источник>
Действие: аналогично SUB, но дополнительно вычитается флаг СF.
Эти команды влияют на флаги. Приемник не может быть адресован непосредственно, оба операнда одновременно не могут быть в памяти.
П
ример:
ADD [BX], DI(Рисунок 4)
Рисунок 4- ADD [BX], DI
3) Команда сравнения:
Формат команды: CMP <опер1>, <опер2>
Действие: аналогично SUB, но изменяются только флаги.
Пример: пусть DI=51; тогда после выполнения CMP 5, [DI] установятся флаги:
C =1;
Z =0 (т.к. разность не равна нулю);
P =1 (флаг паритета);
S =1 (значение самого старшего разряда).
Команды корректировки.
Команды корректировки – команды обработки результатов арифметических операций над кодами чисел ASCII. Если ввод операндов происходит из периферийного устройства (клавиатуры) или через псевдооператоры, то арифметические команды применимы только с командами корректировки:
AAA – скорректировать сложение для ASCII
AAS – скорректировать вычитание для ASCII.
Команды используют неявную адресацию приёмника и источника. Источником в них является регистр AL, т.е. корректируемый результат в AL. Приёмником информации являются регистры AH и AL, причём младший байт откорректированного результата разместится в AL, а перенос в АН. Для полной корректировки, результата в старшие тетрады регистров AH, AL должны быть записаны 3H.
Пример:
Op1 dB ‘9’
Var dB ‘9’
MOV AH, 0
MOV BH, op1
ADD var, BH
MOV AL, var
AH AL
00110001b 00110100b
Запись 3Н делается программным путём, с помощью команды ИЛИ.
Команды логических операций.
1) Поразрядные логические операции:
Формат команды: AND <приёмник>, <источник> - И
Формат команды: OR <приёмник>, <источник> - ИЛИ
Формат команды: XOR <приёмник>, <источник> - исключающее ИЛИ
Формат команды: NOT <приёмник> - НЕ
Ф
ормат
команды: TEST <опер1>, <опер2> -
выполняется как AND, результат не
сохраняется, но влияет на флаги, TEST.
Пример: AND [BX], 001b(Рисунок 5)\
Рисунок 5- AND [BX], 001b
Команда AND часто применяется для выделения нужного количества бит из 1-го операнда. Маска позволяет выделить необходимый разряд первого операнда.
2) Команды сдвига
Формат команды: <мнемокод операции> <приемник>
Формат команды: <мнемокод ><приемник>
Если число разрядов сдвига равно 1, можно указать в команде, иначе число сдвигов определяется содержимым регистра CX.
10101011
101010110 Сдвиг на один разряд в сторону старшего бита
Сдвиги выполняются влево (L, в сторону старшего разряда) и вправо (R).
Сдвиги бывают:
а) Sxx – простые:
SAx - арифметические
SHx – логические (shift)
При SAR знаковый разряд копирует освобождающиеся разряды:
10111111
1
1011111
С
б) Rxx – циклические
Логические сдвиги бывают с учётом флага С (RCx) и без учёта флага (ROx, rotation)
Примеры:
SAL
SAR
SHR [BP]
ROL
ROR
RCL
RCR
SAR byte ptr [BX]-проиллюстрирована на рисунке 6
Рисунок 6- SAR byte ptr [BX]