Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Методичка1.doc
Скачиваний:
6
Добавлен:
01.04.2025
Размер:
1.68 Mб
Скачать

3.2.8. Команды rol и ror

Команды ROL и ROR являются командами циклического сдвига – они сдвигают свои операнды, и биты, которые при этом вышли за разрядную сетку слева (для команды ROL) или справа (для команды ROR), заносятся в освободившиеся биты справа или слева соответственно. Команда ROL сдвигает биты своего операнда влево, а команда ROR – вправо. Синтаксис и требования к операндам у команд ROL и ROR – такие же, как и для команд SHL и SHR.

Пример использования команд ROL и ROR:

X DB 11010111B

. . .

MOV CL, 4

ROL X, CL ; X = 01111101B

ROR X, 1 ; X = 10111110B

3.2.9. Команды rcl и rcr

Команды RCL и RCR аналогичны командам ROL и ROR, но выполняют циклические сдвиги через флаг переноса. Это означает, что при сдвиге операнда на 1 бит, тот бит, который вышел за разрядную сетку, заносится во флаг CF, а значение флага CF перед этим, в свою очередь заносится в освободившийся бит. При сдвиге операнда на несколько бит описанная операция повторяется CL раз. Команда RCL сдвигает биты операнды влево, а RCR – вправо.

Пример использования команд RСL и RСR (предполагается, что флаг CF установлен):

MOV BL, 01011100B

RCL BL, 1 ; BL = 10111001B, CF сброшен

MOV CL, 3

RCR BL, CL ; BL = 11001010B, CF установлен

3.3. Задание и методические указания к выполнению лабораторной работы

3.3.1. Задание на лабораторную работу

  • написать программу на ассемблере, вычисляющую значение выражения с использованием арифметических и логических команд (сложение, вычитание, умножение, деление, конъюнкция, дизъюнкция, сложение по модулю 2, отрицание);

  • проверить работу программы в отладчике.

3.3.2. Методические указания к выполнению работы

Порядок выполнения лабораторной работы №2 соответствует порядку выполнения лабораторной работы №1.

При написании программы следует учесть приоритеты выполнения арифметических и логических операций. Приоритеты операций представлены в таблице 3.1. Приоритеты и знаки операций в таблице соответствуют языку C.

Таблица 3.1 – приоритеты операций.

Приоритет

Операция

1

! , унарный –

2

* , /

3

+ , –

4

&

5

^

6

|

3.4. Контрольные вопросы

  1. Какие логические команды существуют для МП 8086?

  2. Чем отличаются действия команд NOT и NEG?

  3. Какими арифметическими и логическими командами можно заменить действие команды NEG?

  4. В каких случаях выполнение команды OR дает такие же результаты, как выполнение команды ADD?

  5. Какими способами можно обнулить регистр общего назначения?

3.5. Варианты заданий на лабораторную работу

  1. (a | 5) + !b / (2 – (c & 7)) * (d ^ 10) – 1

  2. ((a ^ 2) – (b | 3)) / (2 + (c & 8)) * !d

  3. (a & 3) * (b ^ 8) / (!c * (d | 3)) – 5

  4. !a – (b | 2) * (c ^ 2) * (3 + d & 3) + 2

  5. (a – 4 & 2) / (!b + (c ^ 5)) – !d

  6. ((a & 5) – (b ^ 7)) / (!c + (d | 1) * 2)

  7. (a ^ 4) * 5 – (!b + (c & 5 + d)) / 2 | 3

  8. (a | 3 – (b ^ 4) * (c & 9)) / (!d + 5)

  9. ((a + b | 1) ^ 5) / !c – (d * 5 & 3) + 1

  10. (a & 5) / ((3 * b | 3) – !c) + (d ^ 1)

  11. (a ^ 5 – (b | 3)) / 2 + (!c + !d) / 3 & 7

  12. (a + 1 | 5) / ((b ^ 9) – 1) + !c * (d & 3)

  13. (!a – (b | 6) * (c & 9 – (d ^ 8))) / 4

  14. –a | 7 * (b & 3) + ((c ^ 4) – 1) / !d + 1

  15. (a ^ 3) / ((b | 9) * (!c + 1)) – (d & 2)

  16. (a | 5 + b & 9) * ((c ^ 2) + 3) / (!d – 1)

  17. (a & 4 – (b + c | 8) * 2) / !((d ^ 1) + 5)

  18. (!a – ((b | 6) / c ^ 3)) * (!d – 3) + 1

  19. (a ^ 9) + 2 * (b | 3) – (3 * (c – !d) & 8)

  20. (a | 4) * (3 + b & 5) – 2 * !(c ^ 5 + d)