Аналогично выполняется команда «циклический сдвиг аккумулятора вправо». При этом содержимое младшего разряда аккумулятора передается в его старший разряд и в разряд переноса (С) регистра состояния, а содержимое каждого разряда аккумулятора перемещается в соседний, младший разряд.
Командой «циклический сдвиг аккумулятора влево через бит переноса» все данные, находящиеся в аккумуляторе и разряде переноса (С) регистра состояния, сдвигаются на одну позицию влево. При этом содержимое флага переноса перемешается в младший разряд аккумулятора, а содержимое старшего разряда аккумулятора перемещается в разряд переноса (С) регистра состояния.
Команда «циклический сдвиг аккумулятора вправо» выполняет аналогичное действие, при этом данные перемещаются по кольцу в противоположном направлении.
5.3. Задания к лабораторной работе
Задание №1.
В заданном массиве (10х1) среди чисел, содержащих во втором и пятом разрядах двоичного кода единицу, найти наибольшее.
Для этого необходимо:
а) составить программу обработки массива в соответствии со следующим алгоритмом:
1. Загрузить в один из регистров общего назначения (РОН) количество элементов массива.
2. Загрузить в регистровую пару HL начальный адрес массива.
3. Обнулить регистр результата.
4. Сравнить текущий элемент массива с «маской».
5. Если второй и пятый разряды двоичного кода текущего элемента не содержат единицы, перейти к п.9.
6. Сравнить текущий элемент с числом, находящемся в регистре результата.
7. Если текущий элемент меньше содержимого регистра результата, перейти к п.9.
8. Записать текущий элемент в регистр результата.
9. Увеличить на 1 текущий адрес массива.
10. Уменьшить на 1 число элементов массива.
11. Если число элементов массива не равно 0, то перейти к п.4.
12. Останов.
Текст программы и исходные данные желательно расположить в адресном пространстве ОЗУ в соответствии с таблицей 5.1;
Таблица 5.1
Адрес |
Содержимое |
8000 … 81FF |
Текст программы |
8200 |
Массив |
… |
|
820А |
б) ввести исходный массив (при вводе массива предусмотреть не менее трех различных элементов, содержащих единицу во втором и пятом разрядах двоичного кода) и выполнить программу в пошаговом режиме;
в) после выполнения каждого шага программы заносить в таблицу 5.2 содержимое регистров А, В, С, H, L, а также состояние флагов нулевого результата и переноса;
Таблица 5.2
№ шага |
Регистры |
Флаг нуля |
Флаг переноса |
Комментарий |
||||
А |
В |
С |
H |
L |
||||
0 |
00 |
00 |
00 |
00 |
00 |
X |
X |
Исходные данные |
1 |
||||||||
2 |
Задание №2.
Произвести вычитание двух чисел методом сложения с дополнительным кодом (см. лабораторную работу №4).
Для этого необходимо:
а) составить программу в соответствии со следующим алгоритмом:
1. Загрузить вычитаемое в аккумулятор.
2. Инвертировать содержимое аккумулятора.
3. Увеличить полученное число на единицу.
4. К полученному дополнительному коду вычитаемого прибавить уменьшаемое.
5. Сохранить полученный результат как разность.
6. Сдвинуть полученный результат влево через флаг переноса.
7. Если содержимое флага переноса равно нулю, перейти к п.10.
8. Проинвертировать результат полученный в п.4 с последующим прибавлением к нему единицы младшего разряда.
9. Сохранить полученный результат как разность.
10. Останов.
Текст программы и исходные данные желательно расположить в адресном пространстве ОЗУ в соответствии с таблицей 5.3;
Таблица 5.3
Уважаемый посетитель!
Чтобы распечатать файл, скачайте его (в формате Word).
Ссылка на скачивание - внизу страницы.