IDIV Z ; AL := AX div Z. Команда INC. Команда DEC. Команда NEG. NEG AX ; AX = 1. Команда CBW. MOV AL, 0FEH ; AL = -2. Команда CWD
IDIV Z ; AL: = AX div Z Команда INC Команда INC увеличивает значение регистра или ячейки памяти на 1 (операция инкремента). Синтаксис команды: INC < операнд>
Операндом может быть 16-битный или 8-битный регистр (не сегментный), а также 16-битная или 8-битная ячейка памяти. Использование непосредственного значения исключается. Команда INC устанавливает флаги OF, ZF, SF, PF и AF. Пример использования команды INC: A DB 0FFH ; описание переменной . . . MOV AX, 0FFFH INC AX ; теперь AX = 1000H INC A ; теперь A = 0, устанавливается OF и ZF
Команда DEC Команда DEC уменьшает значение регистра или ячейки памяти на 1 (операция декремента). Синтаксис команды DEC такой же, как и у команды INC. Команда DEC воздействует на флаги OF, ZF, SF, PF и AF. Пример использования команды DEC: A DB 0H ; описание переменной . . . MOV AX, 1000H DEC AX ; теперь AX = 0FFFH DEC A ; теперь A = 0FFh, устанавливается OF и SF
Команда NEG Команда NEG изменяет знак операнда на противоположный. Фактически, команда вычисляет двоичное дополнение операнда – инвертирует все биты операнда и прибавляет единицу. Требования к операнду и синтаксис команды NEG – такие же, как для команды INC. Команда NEG воздействует на флаги AF, CF, OF, PF, SF и ZF. Пример использования команды NEG: MOV AX, 0FFFFH ; AX = -1 NEG AX ; AX = 1 Команда CBW Команда CBW расширяет байт до слова с учетом знака. Команда не имеет операндов. Расширяемый байт находится в регистре AL, а слово команда CBW помещает в регистр AX. При этом для учета знака команда копирует старший бит регистра AL во все биты регистра AH. Пример использования команды CBW:
MOV AL, 0FEH ; AL = -2 CBW ; AX = 0FFFEH (-2)
Команда CWD Команда CWD расширяет слово до двойного слова с учетом знака. Команда не имеет операндов. Расширяемое слово находится в регистре AX, а двойное слово команда CWD помещает в регистровую пару DX: AX – в регистре DX находятся старшие 16 бит результата. При этом для учета знака команда копирует старший бит регистра AX во все биты регистра DX. Пример использования команды CBW: MOV AX, 0FFFDH ; AL = -3 CWD ; DX: AX = 0FFFFFFFDH (-3) Контрольные вопросы 1. Для чего служит команда MOV? 2. Какие требования предъявляются к операндам команды MOV?. 3. Какие арифметические команды существуют для МП 8086? 4. Чем отличаются команды IMUL и MUL? 5. Что произойдет, если результат от деления не помещается в операнде назначения? 6. Какую команду можно использовать для преобразования кодировок символов по кодовым таблицам? 7. Какая команда загружает адрес ячейки памяти в регистр? 8. Какие функции выполняет команда LDS? 9. Как можно узнать состояние флагов после выполнения команды? 10. Для чего используется команда расширения байта до слова? Задания 1. Вычислите значения переменных A, B, C. K=5 P EQU K+15 A DW P B DW K K=10 C DW P 2. Чему равна переменная X и значение регистра AX: X DW? MOV X, 25 MOV AX, X SUB X, 10 ADD AX, X MUL X DEC X DIV 25 ADD AX, X 3. Какие выражения записаны неправильно: X DB? Y DW? а) MOV X, 15 б) MOV DH, X в) MOV SI, 0 г) MOV CS, Y д) MOV AX, BL е) MOV X, BL ж) MOV DS, 100 4. Напишите программу для вычисления выражений: а) a + b / (2 – c) * d – 1 б) (a + 1) / (b – 1) + c * d в) (a – b / c) * (d – 3) + 1 г) a + b / c – d * 5 + 1
5. ЛОГИЧЕСКИЕ КОМАНДЫ
К логическим командам относятся команды побитовых логических операций, таких как «И», «ИЛИ», «НЕ», «ИСКЛЮЧАЮЩЕЕ ИЛИ» и различные команды сдвигов (логические, арифметические, циклические).
5. 1 Команды побитовых логических операций Команда AND Команда AND – это команда побитовой логической операции «И» (конъюнкция). Синтаксис и требования к операндам для команды AND – такие же, как и для команды ADD. Для каждого бита приемника и источника выполняется операция «И», а результат записывается в приемник, или: приемник: = приемник AND источник. Команда воздействует на флаги CF, OF, PF, SF и ZF (значение флага AF не определено). Пример использования команды AND: MOV AL, 10101010B MOV AH, 01010101B AND AL, AH ; AL = 0 MOV AL, 0FFH AND AL, AH ; AL = AH
Команда OR Команда OR – это команда побитовой логической операции «ИЛИ» (дизъюнкция). Синтаксис и требования к операндам для команды OR – такие же, как и для команды AND. Для каждого бита приемника и источника выполняется операция «ИЛИ», а результат записывается в приемник, или: приемник: = приемник OR источник. Команда воздействует на флаги CF, OF, PF, SF и ZF (значение флага AF не определено). Пример использования команды OR: MOV AL, 10101010B MOV AH, 01010101B OR AL, AH ; AL = 0FFH MOV AL, 0 OR AL, AH ; AL = AH
Команда XOR Команда XOR – это команда побитовой логической операции «ИСКЛЮЧАЮЩЕЕ ИЛИ» (сложение по модулю 2). Синтаксис и требования к операндам для команды XOR – такие же, как и для команды OR. Для каждого бита приемника и источника выполняется операция «ИСКЛЮЧАЮЩЕЕ ИЛИ», а результат записывается в приемник, или: приемник: = приемник XOR источник. Команда воздействует на флаги CF, OF, PF, SF и ZF (значение флага AF не определено). Пример использования команды XOR: MOV AL, 11111111B MOV AH, 01010101B XOR AL, AH ; AL = 10101010B XOR AL, AL ; AL = 0
Команда NOT Команда NOT – это команда побитовой логической операции «НЕ» (инверсия). Синтаксис и требования к операндам для команды NOT – такие же, как и для команды INC. Команда инвертирует значение каждого бита операнда, или: операнд: = NOT операнд. В отличие от команды NEG команда NOT просто инвертирует биты операнда и не может использоваться для изменения знака числа, а только для преобразования числа из прямого кода в обратный. Команда не меняет значение флагов.
Пример использования команды NOT: MOV AX, 0FFFFH NOT AX ; AX = 0
Воспользуйтесь поиском по сайту: ©2015 - 2024 megalektsii.ru Все авторские права принадлежат авторам лекционных материалов. Обратная связь с нами...
|