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

5. Содержание отчета

  • Задание по лабораторной работе;

  • Текст программы с комментариями;

  • Входные данные для программы;

  • Краткий обзор команд сдвигов и обработки строк микропроцессора і8086;

  • Ответы на вопросы:

    • в чем отличие команд shl (shr) от sal (sar)?

    • в чем отличие команд rol (ror) от rcl (rcr)?;

6. Пример выполнения задания.

Задан массив А однобайтных чисел. Используя команду сдвига shr подсчитать количество bit = 1 в объявленных данных в каждой единице данных с i=5 по j=3 бит включительно. Результат подсчета для каждого элемента сохранять в массиве В. Для доступа к элементам массива источника и приемника использовать команды работы со строками. Обработку массива вести от последнего к первому элементу. В качестве исходного массива данных строка ‘Petrov’.

Входные данные для программы

Данные

P

e

t

Данные (h)

50h

65h

74h

Номер бита

7

6

5

4

3

2

1

0

7

6

5

4

3

2

1

0

7

6

5

4

3

2

1

0

Значение бита

0

1

0

1

0

0

0

0

0

1

1

0

0

1

0

1

0

1

1

1

0

1

0

0

Данные задачи

х

х

0

1

0

х

х

х

х

х

1

0

0

х

х

х

х

х

1

1

0

х

х

х

Результат

1

1

2

Данные

r

o

v

Данные (h)

72h

6Fh

76h

Номер бита

7

6

5

4

3

2

1

0

7

6

5

4

3

2

1

0

7

6

5

4

3

2

1

0

Значение бита

0

1

1

1

0

0

1

0

0

1

1

0

1

1

1

1

0

1

1

1

0

1

1

0

Данные задачи

х

х

1

1

0

х

х

х

х

х

1

0

1

х

х

х

х

х

1

1

0

х

х

х

Результат

2

2

2

;сегмент данных

A db 'Petrov' ; исходные данные

B db 6 dup (?) ; массив результатов

;сегмент кода

mov si,offset A+5 ; в SI адрес элемента-источника

mov di,offset B+5 ; в DI адрес элемента-приемника

std ; установка флага DF

mov cx,6 ; число элементов массива

cycle:

mov ah,0 ; в AH число bit = 1 в элементе массива

lodsb ; в AL загрузить элемент массива

shr al,1 ; сдвинуться к

shr al,1 ; первому

shr al,1 ; обрабатываемому биту

mov bl,3 ; число обрабатываемых бит

bit:

shr al,1 ; выдвинуть бит во флаг CF

jnc m ; если бит не равен 1 перейти к следующему

inc ah ; битов равных 1 на один больше

m:

dec bl ; число обрабатываемых бит на один меньше

jnz bit ; если не все обработаны перейти к обработке следующего бита

mov al,ah ; результат поместить в AL

stosb ; сохранить результат в массиве-приемнике

loop cycle ; перейти к обработке следующего элемента массива

end