Главная | Обратная связь | Поможем написать вашу работу!
МегаЛекции

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 Все авторские права принадлежат авторам лекционных материалов. Обратная связь с нами...