Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
доп Лабораторная работа №3_1.doc
Скачиваний:
0
Добавлен:
01.04.2025
Размер:
240.13 Кб
Скачать

Команды сдвигов.

Д ействия команд сдвигов показаны на рисунке 1.

Поле операнда всех команд имеет вид mem/reg,count. Здесь mem/reg обычным образом адресует общий регистр или ячейку памяти, содержащие байт или слово, а счетчик count определяет число сдвигов. Счетчик может быть указан как константа 1 (статический сдвиг на один бит) или как регистр CL (динамический сдвиг, в котором число сдвигов определяется содержимым CL). С помощью команд сдвигов осуществляется циклические (кольцевые) и «обычные» сдвиги. В циклических сдвигах выдвигаемый бит помещается на место освобождающегося бита. Команды RCL и RCR называются циклическими сдвигами через перенос, так как в кольцо сдвига включен флаг CF. «Обычные» сдвиги, в которых выдвигаемый бит теряется, подразделяются на логические (команды SHL и SHR) и арифметические (команды SAL и SAR) сдвиги. В арифметическом сдвиге вправо знаковый бит не сдвигается, а копируется в соседний справа бит.

При использовании команд сдвигов флаги модифицирует следующим образом:

  • флаг CF всегда содержит значение последнего выдвинутого бита; состояние флага AF всегда не определено;

  • в статическом сдвиге OF=l, если знаковый бит операнда изменился, а в динамическом сдвиге состояние OF не определено;

  • в «обычных» сдвигах флаги SF, ZF и PF модифицируются в соответствии с полученным результатом.

2. Задание для домашней подготовки.

  1. Повторить команды сдвигов микропроцессора і8086;

  2. Повторить команды обработки цепочек микропроцессора і8086;

  3. Повторить назначение флагов регистра флагов микропроцессора і8086;

  4. Повторить адресацию операндов в командах микропроцессора і8086;

  5. Повторить типы данных для микропроцессора і8086;

3. Порядок выполнения работы.

  1. Ознакомиться с заданием и проанализировать его.

  2. Составить программу согласно заданию в кодах.

  3. Набрать текст составленной программы в текстовом редакторе отладчика.

  4. Выполнить трансляцию программы (в случае возникновения ошибок исправить их).

  5. Сделать пошаговое выполнение программы и убедиться в правильности ее работы (в случае неправильности внести исправления в текст программы и повторить п.4-5)

4. Задание по лабораторной работе.

Задан массив А однобайтных чисел. Используя команду сдвига command подсчитать количество bit в объявленных данных в каждой единице данных с i по j бит включительно (i>j). Результат подсчета для каждого элемента сохранять в массиве В. Для доступа к элементам массива источника и приемника использовать команды работы со строками. Для четных вариантов обработку массива вести от последнего к первому элементу, для нечетных – от первого к последнему. В качестве массива данных взять строку ‘Фамилия_студента’, для четных вариантов bit=0, для нечетных bit=1.

Таблица 1/ Таблица вариантов заданий.

вариант

command

i

j

вариант

command

i

j

1

shl

7

5

17

shl

5

0

2

shr

7

4

18

shr

4

2

3

sal

7

3

19

sal

4

1

4

sar

7

2

20

sar

4

0

5

rol

7

1

21

rol

3

1

6

ror

7

0

22

ror

3

0

7

rcl

6

5

23

rcl

7

5

8

rcr

6

4

24

rcr

7

4

9

shl

6

3

25

shl

7

3

10

shr

6

2

26

shr

7

2

11

sal

6

1

27

sal

7

1

12

sar

6

0

28

sar

7

0

13

rol

5

4

29

rol

6

5

14

ror

5

3

30

ror

6

4

15

rcl

5

2

31

rcl

6

3

16

rcr

5

1

32

rcr

6

2