Лаб. Занятие 2. Обязательные задания для решения в классе.
Лаб. Занятие 2. Обязательная задача [2 балла]
Следует разместить в Moodle решение одной из перечисленных ниже задач (по выбору преподавателя)
[21.s]. Напишите программу которая считает число неотрицательных элементов массива. Массив задан в сегменте данных (подобно тому, как было описано в первой части материалов для подготовки). Результат (количество элементов) остаётся в регистре AX
. Для косвенной адресации к элементам массива использовать один из регистров:SI
, DI
.
[22.s]. Напишите программу, которая суммирует все числа массива, кратные 4. Массив задан в сегменте данных (подобно тому, как было описано в первой части материалов для подготовки). Результат (сумма элементов) должен остаться в регистре AX
. Для проверки кратности 4 используйте SHR
[23.s]. Напишите программу, которая подсчитывает число нечётных значений в массиве. Для проверки чётности используйте деление на 2 с помощью SHR
. Результат (количество элементов) остаётся в регистре AX
. Массив задан в сегменте данных (подобно тому, как было описано в первой части материалов для подготовки).
[24.s]. Напишите программу, которая отдельно суммирует все числа положительные элементы массива и отдельно суммирует отрицательные. Первый и второй результат в конце программы должны находиться в AX
и BX
соответственно. Массив задан в сегменте данных (подобно тому, как было описано в первой части материалов для подготовки).
[25.s]. Напишите программу, которая вычисляет значение выражения 4x2 – x / 2 + 4 для первых четырех членов геометрической прогрессии с начальным значением x = 4 и шагом 2 и последовательно записывает в массив res (в секции неинициализированных данных). Указания. Не использовать LOOP
. Для умножения на 4 и деления на 2 используйте битовый сдвиг.
[26.s] Напишите программу, которая находит максимум среди отрицательных элементов заданного массива. Массив задан в сегменте данных (подобно тому, как было описано в первой части материалов для подготовки). Значение максимального элемента в конце программы должно находиться в регистре AX
.
[27.s]. Напишите программу которая считает количество ненулевых элементов массива. Массив задан в сегменте данных (подобно тому, как было описано в первой части материалов для подготовки). Результат (количество элементов) остаётся в регистре AX
. Для косвенной адресации к элементам массива использовать один из регистров:SI
, DI
.
[28.s] Напишите программу для нахождения номера первого элемента массива кратного пяти. Результат (искомый номер) в конце программы должен остаться в регистре AX
. Массив задан в сегменте данных (подобно тому, как было описано в первой части материалов для подготовки).
[29.s]. Напишите программу, которая вычисляет значение выражения x2 – x % 5 + 6 для первых пяти членов арифметической прогрессии с начальным значением x = 2 и шагом 3 и последовательно записывает в массив res (в секции неинициализированных данных). Указания. Не использовать LOOP
.
[2a.s]. Напишите программу которая суммирует положительные элементы массива. Массив задан в сегменте данных (подобно тому, как было описано в первой части материалов для подготовки). Результат (сумма положительных элементов) в конце программы остаётся в регистре AX
. Для косвенной адресации к элементам массива использовать один из регистров:SI
, DI
.
[2b.s]. Напишите программу, которая суммирует все числа массива, кратные N, где N = 5 — переменная, заданная в секции данных. Массив задан в сегменте данных (подобно тому, как было описано в первой части материалов для подготовки). Указание: обращаться в память по метке N на каждом шаге цикла неэффективно, перед началом цикла загрузите значение N в один из свободных регистров. Результат (сумма элементов) должен остаться в регистре AX
.
[2c.s]. Напишите программу, которая суммирует все нечётные значения массива. Для проверки чётности используйте деление на 2 с помощью SHR
. Результат (сумма элементов) остаётся в регистре AX
. Массив задан в сегменте данных (подобно тому, как было описано в первой части материалов для подготовки).
[2d.s]. Напишите программу, которая отдельно суммирует все числа массива, кратные N, где N = 7 — переменная, заданная в секции данных, и отдельно суммирует числа, не кратные N. Первый и второй результат в конце программы должны находиться в AX
и BX
соответственно. Массив задан в сегменте данных (подобно тому, как было описано в первой части материалов для подготовки).
[2e.s]. Напишите программу, которая вычисляет значение выражения 8x2 – x % 3 для первых пяти членов арифметической прогрессии с начальным значением x = 4 и шагом 2 и последовательно записывает в массив res (в секции неинициализированных данных). Указания. Не использовать LOOP
. Для умножения на 8 используйте битовый сдвиг.
[2f.s] Напишите программу, которая находит максимум в заданном массиве. Массив задан в сегменте данных (подобно тому, как было описано в первой части материалов для подготовки). Значение максимального элемента в конце программы должно находиться в регистре AX
.
[2g.s]. Напишите программу которая считает количество положительных элементов массива. Массив задан в сегменте данных (подобно тому, как было описано в первой части материалов для подготовки). Результат (количество положительных элементов) остаётся в регистре AX
. Для косвенной адресации к элементам массива использовать один из регистров:SI
, DI
.
[2h.s] Напишите программу для нахождения номера первого элемента массива кратного восьми. Для определенности будем считать, что нумерация начинается с нуля. Для выяснения делимости на 8 воспользуйтесь операцией побитового сдвига. Результат (искомый номер) в конце программы должен остаться в регистре AX
. Массив задан в сегменте данных (подобно тому, как было описано в первой части материалов для подготовки).
[2i.s]. Напишите программу которая считает количество отрицательных элементов массива. Массив задан в сегменте данных (подобно тому, как было описано в первой части материалов для подготовки). Результат (число элементов) остаётся в регистре AX
. Для косвенной адресации к элементам массива использовать один из регистров:SI
, DI
.